From: Alejandro Vallejo <alejandro.garciavallejo@amd.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
"Roger Pau Monné" <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>,
"Daniel P . Smith" <dpsmith@apertussolutions.com>,
xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/2] x86: generalise vcpu0 creation for a domain
Date: Tue, 22 Jul 2025 19:29:58 +0200 [thread overview]
Message-ID: <DBIRG1CCNTDD.IMDS9BZ1PVE7@amd.com> (raw)
In-Reply-To: <4f3da0b5-d8f1-4f6a-b6b7-7febe46d1750@suse.com>
On Tue Jul 22, 2025 at 4:45 PM CEST, Jan Beulich wrote:
> On 17.07.2025 19:51, Alejandro Vallejo wrote:
>> Make alloc_dom0_vcpu0() viable as a general vcpu0 allocator. Keep
>> behaviour on any hwdom/ctldom identical to that dom0 used to have, and
>> make non-dom0 have auto node affinity.
>>
>> Rename the function to alloc_dom_vcpu0() to reflect this change in
>> scope, and move the prototype to asm/domain.h from xen/domain.h as it's
>> only used in x86.
>
> Which makes we wonder what's really x86-specific about it. Yes, the use of
> ...
Mostly that it's the only arch doing it.
>
>> --- a/xen/arch/x86/dom0_build.c
>> +++ b/xen/arch/x86/dom0_build.c
>> @@ -254,12 +254,16 @@ unsigned int __init dom0_max_vcpus(void)
>> return max_vcpus;
>> }
>>
>> -struct vcpu *__init alloc_dom0_vcpu0(struct domain *dom0)
>> +struct vcpu *__init alloc_dom_vcpu0(struct domain *d)
>> {
>> - dom0->node_affinity = dom0_nodes;
>> - dom0->auto_node_affinity = !dom0_nr_pxms;
>> + d->auto_node_affinity = true;
>> + if ( is_hardware_domain(d) || is_control_domain(d) )
>> + {
>> + d->node_affinity = dom0_nodes;
>> + d->auto_node_affinity = !dom0_nr_pxms;
>
> ... dom0_nr_pxms here perhaps is. Yet that could be sorted e.g. by making
> this a function parameter.
ARM doesn't dabble with affinities while allocating the first vcpu. It's a
straight vcpu_create(). We could definitely inline setting that affinity
setting and forego the function altogether. I'm not a big fan of functions
with non-obvious side-effects, and this is one such case.
>
>> --- a/xen/arch/x86/include/asm/dom0_build.h
>> +++ b/xen/arch/x86/include/asm/dom0_build.h
>> @@ -23,6 +23,11 @@ unsigned long dom0_paging_pages(const struct domain *d,
>> void dom0_update_physmap(bool compat, unsigned long pfn,
>> unsigned long mfn, unsigned long vphysmap_s);
>>
>> +/* general domain construction */
>
> Nit: Comment style.
Ack
>
>> @@ -1054,9 +1055,11 @@ static struct domain *__init create_dom0(struct boot_info *bi)
>> if ( IS_ERR(d) )
>> panic("Error creating d%u: %ld\n", bd->domid, PTR_ERR(d));
>>
>> + bd->d = d;
>> +
>> init_dom0_cpuid_policy(d);
>>
>> - if ( alloc_dom0_vcpu0(d) == NULL )
>> + if ( alloc_dom_vcpu0(d) == NULL )
>> panic("Error creating %pdv0\n", d);
>>
>> cmdline_size = domain_cmdline_size(bi, bd);
>> @@ -1093,7 +1096,6 @@ static struct domain *__init create_dom0(struct boot_info *bi)
>> bd->cmdline = cmdline;
>> }
>>
>> - bd->d = d;
>> if ( construct_dom0(bd) != 0 )
>> panic("Could not construct domain 0\n");
>
> Isn't this movement of the bd->d assignment entirely unrelated?
>
> Jan
The prior incarnation of this patch (see Daniel's RFC) took a boot_domain, I
think, for which the change would be required. It indeed doesn't seem to be
required any longer.
Cheers,
Alejandro
prev parent reply other threads:[~2025-07-22 17:30 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-17 17:51 [PATCH 0/2] generalise vcpu0 creation for predefined domains Alejandro Vallejo
2025-07-17 17:51 ` [PATCH 1/2] arm: Remove alloc_dom0_vcpu0() Alejandro Vallejo
2025-07-17 21:42 ` Jason Andryuk
2025-07-17 23:56 ` Stefano Stabellini
2025-07-17 17:51 ` [PATCH 2/2] x86: generalise vcpu0 creation for a domain Alejandro Vallejo
2025-07-17 22:09 ` Jason Andryuk
2025-07-18 0:04 ` Stefano Stabellini
2025-07-18 6:42 ` Jan Beulich
2025-07-18 9:46 ` Alejandro Vallejo
2025-07-22 23:48 ` Stefano Stabellini
2025-07-22 14:45 ` Jan Beulich
2025-07-22 17:29 ` Alejandro Vallejo [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DBIRG1CCNTDD.IMDS9BZ1PVE7@amd.com \
--to=alejandro.garciavallejo@amd.com \
--cc=andrew.cooper3@citrix.com \
--cc=anthony.perard@vates.tech \
--cc=dpsmith@apertussolutions.com \
--cc=jbeulich@suse.com \
--cc=julien@xen.org \
--cc=michal.orzel@amd.com \
--cc=roger.pau@citrix.com \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.