aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common/domain.c
diff options
context:
space:
mode:
authorJuergen Gross <juergen.gross@ts.fujitsu.com>2012-01-24 14:20:40 +0000
committerJuergen Gross <juergen.gross@ts.fujitsu.com>2012-01-24 14:20:40 +0000
commit79cf2c4c4f78e970e5e62b2d246b22cd4d1dc442 (patch)
treef454fdffc74fe8019b2166ff9133540577c497db /xen/common/domain.c
parent9b80635f9dd46b584f04c8e948a71c48bd412f96 (diff)
downloadxen-79cf2c4c4f78e970e5e62b2d246b22cd4d1dc442.tar.gz
xen-79cf2c4c4f78e970e5e62b2d246b22cd4d1dc442.tar.bz2
xen-79cf2c4c4f78e970e5e62b2d246b22cd4d1dc442.zip
switch to dynamically allocated cpumask in domain_update_node_affinity()
cpumasks should rather be allocated dynamically. Signed-off-by: juergen.gross@ts.fujitsu.com Committed-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/common/domain.c')
-rw-r--r--xen/common/domain.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 229c1d07f7..50cd32da18 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -220,6 +220,7 @@ struct domain *domain_create(
INIT_PAGE_LIST_HEAD(&d->xenpage_list);
spin_lock_init(&d->node_affinity_lock);
+ d->node_affinity = NODE_MASK_ALL;
spin_lock_init(&d->shutdown_lock);
d->shutdown_code = -1;
@@ -333,23 +334,27 @@ struct domain *domain_create(
void domain_update_node_affinity(struct domain *d)
{
- cpumask_t cpumask;
+ cpumask_var_t cpumask;
nodemask_t nodemask = NODE_MASK_NONE;
struct vcpu *v;
unsigned int node;
- cpumask_clear(&cpumask);
+ if ( !zalloc_cpumask_var(&cpumask) )
+ return;
+
spin_lock(&d->node_affinity_lock);
for_each_vcpu ( d, v )
- cpumask_or(&cpumask, &cpumask, v->cpu_affinity);
+ cpumask_or(cpumask, cpumask, v->cpu_affinity);
for_each_online_node ( node )
- if ( cpumask_intersects(&node_to_cpumask(node), &cpumask) )
+ if ( cpumask_intersects(&node_to_cpumask(node), cpumask) )
node_set(node, nodemask);
d->node_affinity = nodemask;
spin_unlock(&d->node_affinity_lock);
+
+ free_cpumask_var(cpumask);
}