mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
xen, credit2: Put the per-cpu schedule lock back to the default lock when releasing cpu
This fixes a bug that happens when you remove cpus from a credit2 cpupool. Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com> Committed-by: Keir Fraser <keir@xen.org>
This commit is contained in:
1 parent
4cee6a3812
commit
7d302763ac
1 file changed
+6
@@ -1952,6 +1952,7 @@ csched_free_pdata(const struct scheduler *ops, void *pcpu, int cpu)
|
||||
unsigned long flags;
|
||||
struct csched_private *prv = CSCHED_PRIV(ops);
|
||||
struct csched_runqueue_data *rqd;
|
||||
struct schedule_data *sd = &per_cpu(schedule_data, cpu);
|
||||
int rqi;
|
||||
|
||||
spin_lock_irqsave(&prv->lock, flags);
|
||||
@@ -1979,6 +1980,11 @@ csched_free_pdata(const struct scheduler *ops, void *pcpu, int cpu)
|
||||
deactivate_runqueue(prv, rqi);
|
||||
}
|
||||
|
||||
/* Move spinlock to the original lock. */
|
||||
ASSERT(sd->schedule_lock == &rqd->lock);
|
||||
ASSERT(!spin_is_locked(&sd->_lock));
|
||||
sd->schedule_lock = &sd->_lock;
|
||||
|
||||
spin_unlock(&rqd->lock);
|
||||
|
||||
cpumask_clear_cpu(cpu, &prv->initialized);
|
||||
|
||||