[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 for Xen 4.7 1/4] xen: enable per-VCPU parameter settings for RTDS scheduler
On Mon, Mar 7, 2016 at 11:53 AM, Dario Faggioli <dario.faggioli@xxxxxxxxxx> wrote: > On Mon, 2016-03-07 at 09:40 -0700, Jan Beulich wrote: >> > > > On 07.03.16 at 17:28, <lichong659@xxxxxxxxx> wrote: >> > On Mon, Mar 7, 2016 at 6:59 AM, Jan Beulich <JBeulich@xxxxxxxx> >> > wrote: >> > > >> > > > @@ -1163,6 +1173,96 @@ rt_dom_cntl( >> > > > >> > > > + case XEN_DOMCTL_SCHEDOP_getvcpuinfo: >> > > > + if ( guest_handle_is_null(op->u.v.vcpus) ) >> > > > + { >> > > > + rc = -EINVAL; > >> > > > + { >> > > > + rc = -EINVAL; >> > > > + break; >> > > > + } >> > > > + >> > > > + spin_lock_irqsave(&prv->lock, flags); >> > > > + svc = rt_vcpu(d->vcpu[local_sched.vcpuid]); >> > > > + local_sched.s.rtds.budget = svc->budget / >> > > > MICROSECS(1); >> > > > + local_sched.s.rtds.period = svc->period / >> > > > MICROSECS(1); >> > > > + spin_unlock_irqrestore(&prv->lock, flags); >> > > > + >> > > > + if ( __copy_to_guest_offset(op->u.v.vcpus, index, >> > > > + &local_sched, 1) ) >> > > > + { >> > > > + rc = -EFAULT; >> > > > + break; >> > > > + } >> > > > + if ( (++index > 0x3f) && hypercall_preempt_check() >> > > > ) >> > > > + break; > >> > > > + } >> > > > + >> > > > + if ( !rc && (op->u.v.nr_vcpus != index) ) >> > > > + op->u.v.nr_vcpus = index; >> > > I don't think the right side of the && is really necessary / >> > > useful. >> > The right side is to check whether the vcpus array is fully >> > processed. >> > When it is true and no error occurs (rc == 0), we >> > update op->u.v.nr_vcpus, which is returned to libxc, and helps xc >> > function figuring out how many un-processed vcpus should >> > be taken care of in the next hypercall. >> Just consider what the contents of op->u.v.nr_vcpus is after >> this piece of code was executed, once with the full conditional, >> and another time with the right side of the && omitted. >> > BTW, Chong, I'm not sure this has to do with what Jan is saying, but > looking again at XEN_SYSCTL_pcitopoinfo, it looks to me you're missing > copying nr_vcpus back up to the guest (which is actually what makes > libxc knows whether all vcpus have been processed or now). I think by "op->u.v.nr_vcpus = index", we already make the new nr_vcpus seen by the guest (I've verified it). In the case XEN_DOMCTL_scheduler_op of do_domctl(), we make "copyback = 1" after calling sched_adjust(), which means all fields in op (including the new nr_vcpus) will be copied to u_domctl (at the end of do_domctl()). This operation ensures the new nr_vcpus is copied back up to the guest. Please correct me if my understanding is wrong. Chong > > Regards, > Dario > -- > <<This happens because I choose it to happen!>> (Raistlin Majere) > ----------------------------------------------------------------- > Dario Faggioli, Ph.D, http://about.me/dario.faggioli > Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK) > -- Chong Li Department of Computer Science and Engineering Washington University in St.louis _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |