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

Re: [PATCH v5 03/10] x86: Replace arch-specific boot_domain with the common one


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Alejandro Vallejo <alejandro.garciavallejo@xxxxxxx>
  • Date: Mon, 7 Jul 2025 16:49:15 +0200
  • 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)
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DmnHBb3UG8wWl40u+v3IGQEspltpBY3tLWJ9kkHWfmM=; b=g9LkxbvCwqGN5I4IBEVS1O1fdHl89bYHsQL0qusSJZo2ri4iGYngO88t7b2HEn21SZL4dxiN9IeNbLu5iZtoW+O+2/UVJn0JhVbm/lzqkO1ECh/zhkBx6s78GwNSehvw+ft/n3zLSfUMfeZrm9yF6OxehcKnUO1ctBvJP0cGVEVN4csEi5fhZCDLHMTYDrZxzb7wUl981HaaKqb4TizwTIcduolW7/Z3OUas9stYmReu7uSN8wGZ7f/DM2ScW6G71q5k8Z4z6SdTu7tSAgU4dlX8jLdQzFAT/NVwPy+C0t2dVqnHclvf/Z7jHtUNNQPZRhsjWOWFxrveeU8uiGaKWw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qXQy4a5YBNM9gLht9oYjRjIze4kUyi1xUdulCghs6w+9DIc6F8vPwnYFtsj1Tf9CzcFQjDlizpgwlIVG2FDxfqkDboE4BjiRRsbHTMXOkRB5wAcrNQHpMoBhSueel89q7tYErU8iLK5g2XA1+QDCSh42Dt/fdLhbb16CISP7P7DYzQXwFJkupHvpn1q8+YAhlLFYeM58JSVhUFKA6JCFyGidbq1M5W0hPp8d46vwn5xfQwmaZq4aMUHjn55gBfM8/m27AEot83jQ+KkZTNUBjju38gBZd6UKqQZwGKMnJkbtTyR9SvLk9Lrv2lp5EYa+CN2tTTCC9wPiMVmxqLGSRQ==
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Jason Andryuk <jandryuk@xxxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, "Michal Orzel" <michal.orzel@xxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Daniel Smith <dpsmith@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Mon, 07 Jul 2025 14:49:34 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Thu Jul 3, 2025 at 8:04 AM CEST, Jan Beulich wrote:
> On 02.07.2025 17:34, Alejandro Vallejo wrote:
>> On Wed Jul 2, 2025 at 5:15 PM CEST, Jan Beulich wrote:
>>> On 02.07.2025 17:09, Alejandro Vallejo wrote:
>>>> On Wed Jul 2, 2025 at 3:15 PM CEST, Jan Beulich wrote:
>>>>> On 01.07.2025 12:56, Alejandro Vallejo wrote:
>>>>>> --- a/xen/arch/x86/include/asm/bootfdt.h
>>>>>> +++ b/xen/arch/x86/include/asm/bootfdt.h
>>>>>> @@ -3,6 +3,12 @@
>>>>>>  #define X86_BOOTFDT_H
>>>>>>  
>>>>>>  #include <xen/types.h>
>>>>>> +#include <public/xen.h>
>>>>>> +
>>>>>> +struct arch_boot_domain
>>>>>> +{
>>>>>> +    domid_t domid;
>>>>>> +};
>>>>>>  
>>>>>>  struct arch_boot_module
>>>>>>  {
>>>>>> [...]
>>>>>> @@ -1048,11 +1050,11 @@ static struct domain *__init create_dom0(struct 
>>>>>> boot_info *bi)
>>>>>>          dom0_cfg.flags |= XEN_DOMCTL_CDF_iommu;
>>>>>>  
>>>>>>      /* Create initial domain.  Not d0 for pvshim. */
>>>>>> -    bd->domid = get_initial_domain_id();
>>>>>> -    d = domain_create(bd->domid, &dom0_cfg,
>>>>>> +    bd->arch.domid = get_initial_domain_id();
>>>>>> +    d = domain_create(bd->arch.domid, &dom0_cfg,
>>>>>>                        pv_shim ? 0 : CDF_privileged | CDF_hardware);
>>>>>>      if ( IS_ERR(d) )
>>>>>> -        panic("Error creating d%u: %ld\n", bd->domid, PTR_ERR(d));
>>>>>> +        panic("Error creating d%u: %ld\n", bd->arch.domid, PTR_ERR(d));
>>>>>
>>>>> This being the only place where the (now) arch-specific field is used, why
>>>>> does it exist? A local variable would do? And if it's needed for
>>>>> (supposedly arch-agnostic) hyperlaunch, then it probably shouldn't be
>>>>> arch-specific? Daniel, Jason?
>>>>
>>>> As for the arch-agnostic side of things, arm needs some extra work to be
>>>> able to do it safely. dom0less currently constructs domains immediately 
>>>> after
>>>> parsing them, which is problematic for cases where some domains have the 
>>>> prop
>>>> and others don't. The domid allocation strategy may preclude further 
>>>> otherwise
>>>> good domains from being created just because their domid was stolen by a 
>>>> domain
>>>> that didn't actually care about which domid it got.
>>>>
>>>> It'll eventually want to leave the arch-specific area, but I don't want to 
>>>> do
>>>> that work now.
>>>
>>> But if the domU field is fine to live in a common struct despite being 
>>> unused
>>> on x86, why can't the domid field live in a common struct too, despite being
>>> unused on non-x86? Otherwise it'll be extra churn for no gain to later move 
>>> it
>>> there.
>> 
>> Mostly out of tidiness. Otherwise it's hard to know which fields serve a 
>> purpose
>> where.
>> 
>> I genuinely forgot about the domU field. I'm more than happy to drop that 
>> arch
>> subfield and have domid in the main body of the struct, but I suspect MISRA
>> would have something to say about dead data?
>
> In principle yes (and then also about the domU field), but we rejected the
> respective rule altogether (for now? plus for a reason that I must have forgot
> and that escapes me).
>
> Jan

Actually, moving it to an arch-specific field is rather annoying. everyone but
x86 needs the field. I'll just compile it out for x86 specifically with ifdef
guards, even if it is common code.

For the record, I hope to get rid of it on arm/riscv/ppc entirely later on by
deducing domU vs dom0 from the capabilities property.

Cheers,
Alejandro



 


Rackspace

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