|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 2/2] x86: generalise vcpu0 creation for a domain
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
...
> --- 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.
> --- 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.
> @@ -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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |