|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen: sched: avoid races on time values read from NOW()
>>> On 19.05.16 at 10:11, <dario.faggioli@xxxxxxxxxx> wrote:
> --- a/xen/common/sched_rt.c
> +++ b/xen/common/sched_rt.c
> @@ -1198,7 +1198,7 @@ static void
> rt_vcpu_wake(const struct scheduler *ops, struct vcpu *vc)
> {
> struct rt_vcpu * const svc = rt_vcpu(vc);
> - s_time_t now = NOW();
> + s_time_t now;
> bool_t missed;
>
> BUG_ON( is_idle_vcpu(vc) );
> @@ -1225,6 +1225,7 @@ rt_vcpu_wake(const struct scheduler *ops, struct vcpu
> *vc)
> * If a deadline passed while svc was asleep/blocked, we need new
> * scheduling parameters (a new deadline and full budget).
> */
> + now = NOW();
>
> missed = ( now >= svc->cur_deadline );
> if ( missed )
> @@ -1394,7 +1395,7 @@ rt_dom_cntl(
> * from the replq and does the actual replenishment.
> */
> static void repl_timer_handler(void *data){
> - s_time_t now = NOW();
> + s_time_t now;
> struct scheduler *ops = data;
> struct rt_private *prv = rt_priv(ops);
> struct list_head *replq = rt_replq(ops);
> @@ -1406,6 +1407,8 @@ static void repl_timer_handler(void *data){
>
> spin_lock_irq(&prv->lock);
>
> + now = NOW();
> +
> /*
> * Do the replenishment and move replenished vcpus
> * to the temporary list to tickle.
While backporting this for 4.6 (which required substantial
adjustment to the sched_rt.c part) I noticed that there's another
of the cases mentioned in the description in rt_vcpu_insert(). The
commit message doesn't mention why this was left unchanged, so
was not fixing this perhaps just an oversight?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |