[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Cpupools: vcpu affinity handling
# HG changeset patch # User Juergen Gross <juergen.gross@xxxxxxxxxxxxxx> # Date 1297328570 0 # Node ID 19b2424be183b392daa12364bbde4f9bcb0edaae # Parent 1967c7c290ebc6caf29cd3124facc47370c102a3 Cpupools: vcpu affinity handling If a vcpu is pinned to multiple physical cpus, the pinning is not removed if all those physical cpus are removed from the cpupool. When disabling the scheduler on a cpu, the affinity mask must be checked against the cpumask of the cpupool. Signed-off-by: Juergen Gross <juergen.gross@xxxxxxxxxxxxxx> --- xen/common/schedule.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) diff -r 1967c7c290eb -r 19b2424be183 xen/common/schedule.c --- a/xen/common/schedule.c Wed Feb 09 12:03:09 2011 +0000 +++ b/xen/common/schedule.c Thu Feb 10 09:02:50 2011 +0000 @@ -466,6 +466,7 @@ int cpu_disable_scheduler(unsigned int c struct domain *d; struct vcpu *v; struct cpupool *c; + cpumask_t online_affinity; int ret = 0; bool_t affinity_broken; @@ -484,7 +485,8 @@ int cpu_disable_scheduler(unsigned int c { vcpu_schedule_lock_irq(v); - if ( (cpus_weight(v->cpu_affinity) == 1) && + cpus_and(online_affinity, v->cpu_affinity, c->cpu_valid); + if ( cpus_empty(online_affinity) && cpu_isset(cpu, v->cpu_affinity) ) { printk("Breaking vcpu affinity for domain %d vcpu %d\n", _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |