>>> On 13.07.18 at 22:03, <andrew.coop...@citrix.com> wrote:
> --- a/xen/arch/x86/domctl.c
> +++ b/xen/arch/x86/domctl.c
> @@ -1523,6 +1523,40 @@ long arch_do_domctl(
>          recalculate_cpuid_policy(d);
>          break;
>  
> +    case XEN_DOMCTL_get_cpu_policy:
> +        if ( !guest_handle_is_null(domctl->u.cpu_policy.cpuid_policy) )
> +        {
> +            if ( (ret = x86_cpuid_copy_to_buffer(
> +                      d->arch.cpuid,
> +                      domctl->u.cpu_policy.cpuid_policy,
> +                      &domctl->u.cpu_policy.nr_leaves)) )
> +                break;
> +
> +            if ( __copy_field_to_guest(u_domctl, domctl,
> +                                       u.cpu_policy.nr_leaves) )
> +            {
> +                ret = -EFAULT;
> +                break;
> +            }
> +        }
> +
> +        if ( !guest_handle_is_null(domctl->u.cpu_policy.msr_policy) )
> +        {
> +            if ( (ret = x86_msr_copy_to_buffer(
> +                      d->arch.msr,
> +                      domctl->u.cpu_policy.msr_policy,
> +                      &domctl->u.cpu_policy.nr_msrs)) )
> +                break;
> +
> +            if ( __copy_field_to_guest(u_domctl, domctl,
> +                                       u.cpu_policy.nr_msrs) )
> +            {
> +                ret = -EFAULT;
> +                break;
> +            }
> +        }
> +        break;

Am I getting it right that the array sizing here is supposed to be done
based on the sysctl output? That's probably okay because we expect
callers to use libxc, but it doesn't make for a very consistent interface
(set).

> --- a/xen/include/public/domctl.h
> +++ b/xen/include/public/domctl.h
> @@ -635,6 +635,22 @@ struct xen_domctl_cpuid {
>    uint32_t ecx;
>    uint32_t edx;
>  };
> +
> +/*
> + * XEN_SYSCTL_{get,set}_cpu_policy (x86 specific)
> + *
> + * Query or set the CPUID and MSR policies for a specific domain.
> + */
> +struct xen_domctl_cpu_policy {
> +    uint32_t nr_leaves; /* IN/OUT: Number of leaves in/written to
> +                         * 'cpuid_policy'. */
> +    uint32_t nr_msrs;   /* IN/OUT: Number of MSRs in/written to
> +                         * 'msr_domain_policy' */
> +    XEN_GUEST_HANDLE_64(xen_cpuid_leaf_t) cpuid_policy; /* IN/OUT: */
> +    XEN_GUEST_HANDLE_64(xen_msr_entry_t) msr_policy;    /* IN/OUT: */

Stray colons again in the comments? With them dropped, and
despite the remark above
Acked-by: Jan Beulich <jbeul...@suse.com>

Jan



_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to