On 26.11.2025 15:32, Oleksii Kurochko wrote:
> --- a/xen/arch/x86/include/asm/pv/domain.h
> +++ b/xen/arch/x86/include/asm/pv/domain.h
> @@ -18,6 +18,9 @@ extern int8_t opt_pv32;
>  # define opt_pv32 false
>  #endif
>  
> +unsigned int arch_alloc_domain_struct_bits(void);
> +#define arch_alloc_domin_struct_bits arch_alloc_domain_struct_bits

There was an 'a' lost in the identifier.

> --- a/xen/common/domain.c
> +++ b/xen/common/domain.c
> @@ -799,6 +799,29 @@ static int sanitise_domain_config(struct 
> xen_domctl_createdomain *config)
>      return arch_sanitise_domain_config(config);
>  }
>  
> +struct domain *alloc_domain_struct(void)
> +{
> +    struct domain *d;
> +    unsigned int bits = 0;
> +
> +#ifdef arch_alloc_domin_struct_bits
> +    bits = arch_alloc_domin_struct_bits();
> +#endif

Maybe

#ifndef arch_alloc_domain_struct_bits
# define arch_alloc_domain_struct_bits() 0
#endif

ahead of the use and then simply

    unsigned int bits = arch_alloc_domain_struct_bits();

?

> +    BUILD_BUG_ON(sizeof(*d) > PAGE_SIZE);
> +
> +    d = alloc_xenheap_pages(0, MEMF_bits(bits));

I'd go a little farther and allow the arch to specify all the memflags that
are wanted. Then the hook name would also be less ambiguous, as "bits" can
mean many things. Perhaps arch_alloc_domain_struct_memflags() or, since
"memflags" kind of implies allocation, arch_domain_struct_memflags()?

Jan

Reply via email to