diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index a382d30098..bb67cd1e0e 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -365,11 +365,11 @@ "auto", defaults to "static" if cpuset is specified, "auto" indicates the domain process will be pinned to the advisory nodeset from querying numad, and the value of attribute - cpuset will be overridden by the advisory nodeset - from numad if it's specified. If both cpuset and - placement are not specified, or if placement - is "static", but no cpuset is specified, the domain - process will be pinned to all the available physical CPUs. + cpuset will be ignored if it's specified. If both + cpuset and placement are not specified, + or if placement is "static", but no cpuset + is specified, the domain process will be pinned to all the + available physical CPUs. diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index a9c5cbce21..b28ae5cae2 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -7884,19 +7884,6 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, } } - tmp = virXPathString("string(./vcpu[1]/@cpuset)", ctxt); - if (tmp) { - char *set = tmp; - def->cpumasklen = VIR_DOMAIN_CPUMASK_LEN; - if (VIR_ALLOC_N(def->cpumask, def->cpumasklen) < 0) { - goto no_memory; - } - if (virDomainCpuSetParse(set, 0, def->cpumask, - def->cpumasklen) < 0) - goto error; - VIR_FREE(tmp); - } - tmp = virXPathString("string(./vcpu[1]/@placement)", ctxt); if (tmp) { if ((def->placement_mode = @@ -7913,6 +7900,21 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, def->placement_mode = VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC; } + if (def->placement_mode == VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC) { + tmp = virXPathString("string(./vcpu[1]/@cpuset)", ctxt); + if (tmp) { + char *set = tmp; + def->cpumasklen = VIR_DOMAIN_CPUMASK_LEN; + if (VIR_ALLOC_N(def->cpumask, def->cpumasklen) < 0) { + goto no_memory; + } + if (virDomainCpuSetParse(set, 0, def->cpumask, + def->cpumasklen) < 0) + goto error; + VIR_FREE(tmp); + } + } + /* Extract cpu tunables. */ if (virXPathULong("string(./cputune/shares[1])", ctxt, &def->cputune.shares) < 0)