[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 07/11] xen: move domain_use_host_layout() to common code


  • To: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Wed, 1 Apr 2026 16:42:22 +0200
  • 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"
  • Autocrypt: addr=jbeulich@xxxxxxxx; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL
  • Cc: Romain Caritey <Romain.Caritey@xxxxxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • Delivery-date: Wed, 01 Apr 2026 14:49:34 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

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



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.