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:
George Dunlap committed 2012-04-10 10:41:55 +01:00
1 parent 4cee6a3812
commit 7d302763ac
1 file changed
+6
+6
View File
@@ -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);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.