credit: unpause parked vcpu before destroying it
authorJuergen Gross <juergen.gross@ts.fujitsu.com>
Wed, 16 Oct 2013 10:26:48 +0000 (12:26 +0200)
committerJan Beulich <jbeulich@suse.com>
Wed, 16 Oct 2013 10:26:48 +0000 (12:26 +0200)
A capped out vcpu must be unpaused in case of moving it to another cpupool,
otherwise it will be paused forever.

Signed-off-by: Juergen Gross <juergen.gross@ts.fujitsu.com>
Acked-by: George Dunlap <george.dunlap@eu.citrix.com>
xen/common/sched_credit.c

index 192c65393743d538b9f15fd67c1c77889cfc46ff..e69d794a22e46d5b96d1dc20119631885f5f0aa5 100644 (file)
@@ -929,6 +929,12 @@ csched_vcpu_remove(const struct scheduler *ops, struct vcpu *vc)
 
     SCHED_STAT_CRANK(vcpu_destroy);
 
+    if ( test_and_clear_bit(CSCHED_FLAG_VCPU_PARKED, &svc->flags) )
+    {
+        SCHED_STAT_CRANK(vcpu_unpark);
+        vcpu_unpause(svc->vcpu);
+    }
+
     if ( __vcpu_on_runq(svc) )
         __runq_remove(svc);