|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v8 for Xen 4.7 1/4] xen: enable per-VCPU parameter for RTDS
>>> On 21.03.16 at 16:18, <lichong659@xxxxxxxxx> wrote:
> On Mon, Mar 21, 2016 at 8:35 AM, Jan Beulich <JBeulich@xxxxxxxx> wrote:
>>>>> On 18.03.16 at 22:26, <lichong659@xxxxxxxxx> wrote:
>>> --- a/xen/include/public/domctl.h
>>> +++ b/xen/include/public/domctl.h
>>> @@ -338,24 +338,64 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_max_vcpus_t);
>>> #define XEN_SCHEDULER_ARINC653 7
>>> #define XEN_SCHEDULER_RTDS 8
>>>
>>> -/* Set or get info? */
>>> +typedef struct xen_domctl_sched_credit {
>>> + uint16_t weight;
>>> + uint16_t cap;
>>> +} xen_domctl_sched_credit_t;
>>> +
>>> +typedef struct xen_domctl_sched_credit2 {
>>> + uint16_t weight;
>>> +} xen_domctl_sched_credit2_t;
>>> +
>>> +typedef struct xen_domctl_sched_rtds {
>>> + uint32_t period;
>>> + uint32_t budget;
>>> +} xen_domctl_sched_rtds_t;
>>> +
>>> +typedef struct xen_domctl_schedparam_vcpu {
>>> + union {
>>> + xen_domctl_sched_credit_t credit;
>>> + xen_domctl_sched_credit2_t credit2;
>>> + xen_domctl_sched_rtds_t rtds;
>>> + } u;
>>> + uint32_t vcpuid;
>>> + uint16_t padding[2];
>>
>> So why uint16_t[2] instead of just uint32_t? And what's the
>> padding needed for in the first place?
>
> You're right. It's better to use uint32_t, which pads (the struct) to
> the 64-bit boundary.
Which doesn't answer the "why in the first place" part - I don't
see why structure size needs to be a multiple of 64 bits.
>> Also, while for a domctl it's
>> not as strictly needed as for other hypercalls, checking that all
>> padding fields are zero would still seem to be rather desirable.
>>
>
> Do you mean:
>
> + case XEN_DOMCTL_SCHEDOP_getvcpuinfo:
> + case XEN_DOMCTL_SCHEDOP_putvcpuinfo:
> + if ( op->u.v.padding !=0 )
> + {
> + rc = -EINVAL;
> + break;
> + }
> + while ( index < op->u.v.nr_vcpus )
> + {
> + if ( copy_from_guest_offset(&local_sched,
> + op->u.v.vcpus, index, 1) )
> + {
> + rc = -EFAULT;
> + break;
> + }
> + if ( local_sched.padding != 0 )
> + {
> + rc = -EINVAL;
> + break;
> + }
> + if ( local_sched.vcpuid >= d->max_vcpus ||
> + d->vcpu[local_sched.vcpuid] == NULL )
> + {
> + rc = -EINVAL;
> + break;
> + }
>
> ?
Yes, something along those lines.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |