sched: always ask the scheduler to re-place the vcpu when the affinity changes
authorGeorge Dunlap <george.dunlap@eu.citrix.com>
Fri, 8 Mar 2013 08:43:40 +0000 (09:43 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 8 Mar 2013 08:43:40 +0000 (09:43 +0100)
It's probably a good idea to re-evaluate placement whenever the
affinity changes.

This additionally has the benefit of removing scheduler-specific
exceptions introduced in git c/s e6a6fd63.

The conditionals surrounding vcpu_migrate() are left pending a re-work
of the logic to avoid the common case calling vcpu_migrate() twice (once
here, and once in context_saved().

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
xen/common/schedule.c

index 5f677c36f8d6e9ce160c55b985f134a9d46e95c9..83fae4c9d2d4aa78189c08d0294f9ff25aeb96aa 100644 (file)
@@ -614,9 +614,10 @@ int vcpu_set_affinity(struct vcpu *v, const cpumask_t *affinity)
     vcpu_schedule_lock_irq(v);
 
     cpumask_copy(v->cpu_affinity, affinity);
-    if ( VCPU2OP(v)->sched_id == XEN_SCHEDULER_SEDF ||
-         !cpumask_test_cpu(v->processor, v->cpu_affinity) )
-        set_bit(_VPF_migrating, &v->pause_flags);
+
+    /* Always ask the scheduler to re-evaluate placement
+     * when changing the affinity */
+    set_bit(_VPF_migrating, &v->pause_flags);
 
     vcpu_schedule_unlock_irq(v);