|
|
|
|
|
|
|
|
|
|
xen-changelog
[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
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-unstable] Cpupools: vcpu affinity handling,
Xen patchbot-unstable <=
|
|
|
|
|