aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDario Faggioli <dario.faggioli@citrix.com>2013-09-30 13:59:47 +0200
committerJan Beulich <jbeulich@suse.com>2013-09-30 13:59:47 +0200
commit93be8285a79c6cbbf66c8681fec1d1bfb71d84cc (patch)
treecbaebdcfc3cf736458f9653452b8853e4ec3a1e7
parenteb68feea83c9d299c82ef673dd73aa04265292db (diff)
downloadxen-93be8285a79c6cbbf66c8681fec1d1bfb71d84cc.tar.gz
xen-93be8285a79c6cbbf66c8681fec1d1bfb71d84cc.tar.bz2
xen-93be8285a79c6cbbf66c8681fec1d1bfb71d84cc.zip
cpupools: update domU's node-affinity on the cpupool_unassign_cpu() path
that is, when a cpu is remove from a pool, as it is happening already on the cpupool_assign_cpu_*() path (i.e., when a cpu is added to a pool). Signed-off-by: Dario Faggioli <dario.faggioli@citrix.com> Acked-by: Juergen Gross <juergen.gross@ts.fujitsu.com>
-rw-r--r--xen/common/cpupool.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/xen/common/cpupool.c b/xen/common/cpupool.c
index 2164a9fc72..933de782b7 100644
--- a/xen/common/cpupool.c
+++ b/xen/common/cpupool.c
@@ -355,6 +355,12 @@ int cpupool_unassign_cpu(struct cpupool *c, unsigned int cpu)
atomic_inc(&c->refcnt);
cpupool_cpu_moving = c;
cpumask_clear_cpu(cpu, c->cpu_valid);
+
+ rcu_read_lock(&domlist_read_lock);
+ for_each_domain_in_cpupool(d, c)
+ domain_update_node_affinity(d);
+ rcu_read_unlock(&domlist_read_lock);
+
spin_unlock(&cpupool_lock);
work_cpu = smp_processor_id();