_csched_cpu_pick(): don't return CPUs outside vCPU's affinity mask
authorJan Beulich <jbeulich@novell.com>
Mon, 14 Mar 2011 17:19:22 +0000 (17:19 +0000)
committerJan Beulich <jbeulich@novell.com>
Mon, 14 Mar 2011 17:19:22 +0000 (17:19 +0000)
This fixes a fairly blatant bug I introduced in c/s 20377:cff23354d026
- I wonder how this went unnoticed for so long.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
xen/common/sched_credit.c

index 0cbc7e13420b3e731a05718f53ab4c424ffb98ac..bfdd567e3e63f33035710cc12d7b65ba57752aa8 100644 (file)
@@ -530,6 +530,7 @@ _csched_cpu_pick(const struct scheduler *ops, struct vcpu *vc, bool_t commit)
              || ( !sched_smt_power_savings
                   && (weight_cpu * migrate_factor < weight_nxt) ) )
         {
+            cpus_and(nxt_idlers, cpus, nxt_idlers);
             cpu = cycle_cpu(CSCHED_PCPU(nxt)->idle_bias, nxt_idlers);
             if ( commit )
                CSCHED_PCPU(nxt)->idle_bias = cpu;