[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 5/5] xen: sched: simplify ACPI S3 resume path.
On Tue, Jan 17, 2017 at 5:27 PM, Dario Faggioli <dario.faggioli@xxxxxxxxxx> wrote: > In fact, when domains are being unpaused: > - it's not necessary to put the vcpu to sleep, as > they are all already paused; > - it is not necessary to call vcpu_migrate(), as > the vcpus are still paused, and therefore won't > wakeup anyway. > > Basically, the only important thing is to call > pick_cpu, to let the scheduler run and figure out > what would be the best initial placement (i.e., the > value stored in v->processor), for the vcpus, as > they come back up, one after another. > > Note that this is consistent with what was happening > before this change, as vcpu_migrate() calls pick_cpu. > But much simpler and quicker. > > Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx> Reviewed-by: George Dunlap <george.dunlap@xxxxxxxxxx> > --- > Cc: George Dunlap <george.dunlap@xxxxxxxxxxxxx> > --- > xen/common/schedule.c | 22 ++++++++++------------ > 1 file changed, 10 insertions(+), 12 deletions(-) > > diff --git a/xen/common/schedule.c b/xen/common/schedule.c > index bee5d1f..43b5b99 100644 > --- a/xen/common/schedule.c > +++ b/xen/common/schedule.c > @@ -635,7 +635,11 @@ void restore_vcpu_affinity(struct domain *d) > > for_each_vcpu ( d, v ) > { > - spinlock_t *lock = vcpu_schedule_lock_irq(v); > + spinlock_t *lock; > + > + ASSERT(!vcpu_runnable(v)); > + > + lock = vcpu_schedule_lock_irq(v); > > if ( v->affinity_broken ) > { > @@ -659,17 +663,11 @@ void restore_vcpu_affinity(struct domain *d) > cpupool_domain_cpumask(v->domain)); > v->processor = cpumask_any(cpumask_scratch_cpu(cpu)); > > - if ( v->processor == cpu ) > - { > - set_bit(_VPF_migrating, &v->pause_flags); > - spin_unlock_irq(lock);; > - vcpu_sleep_nosync(v); > - vcpu_migrate(v); > - } > - else > - { > - spin_unlock_irq(lock); > - } > + spin_unlock_irq(lock);; > + > + lock = vcpu_schedule_lock_irq(v); > + v->processor = SCHED_OP(VCPU2OP(v), pick_cpu, v); > + spin_unlock_irq(lock); > } > > domain_update_node_affinity(d); > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > https://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |