On 31.07.2025 11:42, Grygorii Strashko wrote: > --- a/xen/arch/arm/domain.c > +++ b/xen/arch/arm/domain.c > @@ -613,7 +613,8 @@ int arch_sanitise_domain_config(struct > xen_domctl_createdomain *config) > unsigned int flags_required = (XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap); > unsigned int flags_optional = (XEN_DOMCTL_CDF_iommu | > XEN_DOMCTL_CDF_vpmu | > XEN_DOMCTL_CDF_xs_domain | > - XEN_DOMCTL_CDF_trap_unmapped_accesses ); > + XEN_DOMCTL_CDF_trap_unmapped_accesses | > + XEN_DOMCTL_CDF_is_32bits ); > unsigned int sve_vl_bits = sve_decode_vl(config->arch.sve_vl); > > if ( (config->flags & ~flags_optional) != flags_required ) > @@ -711,6 +712,13 @@ int arch_domain_create(struct domain *d, > > BUILD_BUG_ON(GUEST_MAX_VCPUS < MAX_VIRT_CPUS); > > +#ifdef CONFIG_ARM_64 > + if ( d->options & XEN_DOMCTL_CDF_is_32bits ) > + d->arch.type = DOMAIN_32BIT; > + else > + d->arch.type = DOMAIN_64BIT; > +#endif > + > #ifdef CONFIG_IOREQ_SERVER > ioreq_domain_init(d); > #endif
No adjustment to x86'es arch_sanitise_domain_config()? Until the new bit is actually properly handled, I think its use will need rejecting. > --- a/xen/include/public/domctl.h > +++ b/xen/include/public/domctl.h > @@ -68,9 +68,14 @@ struct xen_domctl_createdomain { > #define XEN_DOMCTL_CDF_vpmu (1U << 7) > /* Should we trap guest accesses to unmapped addresses? */ > #define XEN_DOMCTL_CDF_trap_unmapped_accesses (1U << 8) > +/* > + * Is this domain running 32bit guest? > + * Used for 64bits arches. > + */ > +#define XEN_DOMCTL_CDF_is_32bits (1U << 9) Please pad suitably, as is the case for XEN_DOMCTL_CDF_vpmu visible in context. XEN_DOMCTL_CDF_trap_unmapped_accesses simply is too long to fit that padding scheme. Jan