[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen stable-4.9] xen: Introduce vcpu_sleep_nosync_locked()
commit 002ea4d14a2a62e405941a65099f7f2ff5eceebe Author: George Dunlap <george.dunlap@xxxxxxxxxx> AuthorDate: Fri May 18 11:59:09 2018 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Fri May 18 11:59:09 2018 +0200 xen: Introduce vcpu_sleep_nosync_locked() There are a lot of places which release a lock before calling vcpu_sleep_nosync(), which then just grabs the lock again. This is not only a waste of time, but leads to more code duplication (since you have to copy-and-paste recipes rather than calling a unified function), which in turn leads to an increased chance of bugs. Introduce vcpu_sleep_nosync_locked(), which can be called if you already hold the schedule lock. Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx> Reviewed-by: Dario Faggioli <dfaggioli@xxxxxxxx> master commit: da0a5e00de8aa93f2a7482d138dbee9dec2aa5c2 master date: 2018-05-03 11:56:36 +0100 --- xen/common/schedule.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/xen/common/schedule.c b/xen/common/schedule.c index 1058e19b6e..7769eaac13 100644 --- a/xen/common/schedule.c +++ b/xen/common/schedule.c @@ -436,14 +436,9 @@ void sched_destroy_domain(struct domain *d) cpupool_rm_domain(d); } -void vcpu_sleep_nosync(struct vcpu *v) +void vcpu_sleep_nosync_locked(struct vcpu *v) { - unsigned long flags; - spinlock_t *lock; - - TRACE_2D(TRC_SCHED_SLEEP, v->domain->domain_id, v->vcpu_id); - - lock = vcpu_schedule_lock_irqsave(v, &flags); + ASSERT(spin_is_locked(per_cpu(schedule_data,v->processor).schedule_lock)); if ( likely(!vcpu_runnable(v)) ) { @@ -452,6 +447,18 @@ void vcpu_sleep_nosync(struct vcpu *v) SCHED_OP(vcpu_scheduler(v), sleep, v); } +} + +void vcpu_sleep_nosync(struct vcpu *v) +{ + unsigned long flags; + spinlock_t *lock; + + TRACE_2D(TRC_SCHED_SLEEP, v->domain->domain_id, v->vcpu_id); + + lock = vcpu_schedule_lock_irqsave(v, &flags); + + vcpu_sleep_nosync_locked(v); vcpu_schedule_unlock_irqrestore(lock, flags, v); } -- generated by git-patchbot for /home/xen/git/xen.git#stable-4.9 _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |