[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC V2 30/45] xen/sched: rework and rename vcpu_force_reschedule()
>>> On 06.05.19 at 08:56, <jgross@xxxxxxxx> wrote: > --- a/xen/common/schedule.c > +++ b/xen/common/schedule.c > @@ -808,21 +808,24 @@ static void vcpu_migrate_finish(struct vcpu *v) > } > > /* > - * Force a VCPU through a deschedule/reschedule path. > - * For example, using this when setting the periodic timer period means that > - * most periodic-timer state need only be touched from within the scheduler > - * which can thus be done without need for synchronisation. > + * Set the periodic timer of a vcpu. > */ > -void vcpu_force_reschedule(struct vcpu *v) > +void vcpu_set_periodic_timer(struct vcpu *v, s_time_t value) > { > - spinlock_t *lock = item_schedule_lock_irq(v->sched_item); > + s_time_t now = NOW(); > > - if ( v->sched_item->is_running ) > - vcpu_migrate_start(v); > + if ( v != current ) > + vcpu_pause(v); > + else > + stop_timer(&v->periodic_timer); > > - item_schedule_unlock_irq(lock, v->sched_item); > + v->periodic_period = value; > + v->periodic_last_event = now; By the time you come here, NOW() may already be past now + value. It's not clear to me whether that'll work correctly; I think it would be better to latch NOW() only at this point. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |