diff --git a/xen/common/cpupool.c b/xen/common/cpupool.c index 5a90bdc9ff..b90bf42703 100644 --- a/xen/common/cpupool.c +++ b/xen/common/cpupool.c @@ -615,7 +615,8 @@ static int cpupool_cpu_add(unsigned int cpu) get_sched_res(cpu)->cpupool = NULL; cpus = sched_get_opt_cpumask(cpupool0->gran, cpu); - if ( cpumask_subset(cpus, &cpupool_free_cpus) ) + if ( cpumask_subset(cpus, &cpupool_free_cpus) && + cpumask_weight(cpus) == cpupool_get_granularity(cpupool0) ) ret = cpupool_assign_cpu_locked(cpupool0, cpu); rcu_read_unlock(&sched_res_rculock);