On 23.11.2024 19:20, Daniel P. Smith wrote:
> --- a/xen/arch/x86/domain_builder/fdt.c
> +++ b/xen/arch/x86/domain_builder/fdt.c
> @@ -209,6 +209,19 @@ static int __init process_domain_node(
>              bd->max_vcpus = val;
>              printk("  max vcpus: %d\n", bd->max_vcpus);
>          }
> +        if ( match_fdt_property(fdt, prop, "capabilities" ) )
> +        {
> +            if ( fdt_prop_as_u32(prop, &bd->capabilities) != 0 )
> +            {
> +                printk("  failed processing domain id for domain %s\n",
> +                       name == NULL ? "unknown" : name);
> +                return -EINVAL;
> +            }
> +            printk("  caps: ");
> +            if ( bd->capabilities & BUILD_CAPS_CONTROL )
> +                printk("c");
> +            printk("\n");
> +        }

What if any of the other bits is set?

> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -992,6 +992,7 @@ static size_t __init domain_cmdline_size(
>  static struct domain *__init create_dom0(struct boot_info *bi)
>  {
>      char *cmdline = NULL;
> +    int create_flags = 0;

Once again unsigned int please.

> @@ -1023,7 +1024,10 @@ static struct domain *__init create_dom0(struct 
> boot_info *bi)
>      /* Create initial domain.  Not d0 for pvshim. */
>      if ( bd->domid == DOMID_INVALID )
>          bd->domid = get_initial_domain_id();
> -    d = domain_create(bd->domid, &dom0_cfg, pv_shim ? 0 : CDF_privileged);
> +    if ( bd->capabilities & BUILD_CAPS_CONTROL )
> +            create_flags |= CDF_privileged;

Nit: Indentation.

Jan

Reply via email to