xen: credit2: non Credit2 pCPUs are ok during shutdown/suspend.
authorDario Faggioli <dario.faggioli@citrix.com>
Sat, 28 Jan 2017 01:42:22 +0000 (02:42 +0100)
committerGeorge Dunlap <george.dunlap@citrix.com>
Wed, 1 Feb 2017 14:44:51 +0000 (14:44 +0000)
Commit 7478ebe1602e6 ("xen: credit2: fix shutdown/suspend
when playing with cpupools"), while doing the right thing
for actual code, forgot to update the ASSERT()s accordingly,
in csched2_vcpu_migrate().

In fact, as stated there already, during shutdown/suspend,
we must allow a Credit2 vCPU to temporarily migrate to a
non Credit2 BSP, without any ASSERT() triggering.

Move them down, after the check for whether or not we are
shutting down, where the assumption that the pCPU must be
valid Credit2 ones, is valid.

Signed-off-by: Dario Faggioli <dario.faggioli@citrix.com>
xen/common/sched_credit2.c

index b7e31ab32aabad05b2a6c165ba8deaaf3c50639c..93c6d32c6c1c2f87d9d0f1f08e9e4df885cde481 100644 (file)
@@ -1953,10 +1953,6 @@ csched2_vcpu_migrate(
     struct csched2_runqueue_data *trqd;
     s_time_t now = NOW();
 
-    /* Check if new_cpu is valid */
-    ASSERT(cpumask_test_cpu(new_cpu, &CSCHED2_PRIV(ops)->initialized));
-    ASSERT(cpumask_test_cpu(new_cpu, vc->cpu_hard_affinity));
-
     /*
      * Being passed a target pCPU which is outside of our cpupool is only
      * valid if we are shutting down (or doing ACPI suspend), and we are
@@ -1985,6 +1981,10 @@ csched2_vcpu_migrate(
         return;
     }
 
+    /* If here, new_cpu must be a valid Credit2 pCPU, and in our affinity. */
+    ASSERT(cpumask_test_cpu(new_cpu, &CSCHED2_PRIV(ops)->initialized));
+    ASSERT(cpumask_test_cpu(new_cpu, vc->cpu_hard_affinity));
+
     trqd = RQD(ops, new_cpu);
 
     /*