On 05.05.2015 12:13, Luyao Huang wrote: > https://bugzilla.redhat.com/show_bug.cgi?id=1176020 > > We had a check for the vcpu count total number in <numa> > before, however this check is not good enough. There are > some examples: > > 1. one of cpu id is out of maxvcpus, can set success(cpu count = 5 < 10): > > <vcpu placement='static'>10</vcpu> > <cell id='0' cpus='0-3,100' memory='512000' unit='KiB'/> > > 2. use the same cpu in 2 cell, can set success(cpu count = 8 < 10): > <vcpu placement='static'>10</vcpu> > <cell id='0' cpus='0-3' memory='512000' unit='KiB'/> > <cell id='1' cpus='0-3' memory='512000' unit='KiB'/> > > 3. use the same cpu in 2 cell, cannot set success(cpu count = 11 > 10): > <vcpu placement='static'>10</vcpu> > <cell id='0' cpus='0-6' memory='512000' unit='KiB'/> > <cell id='1' cpus='0-3' memory='512000' unit='KiB'/> > > Add a check for numa cpus, check if duplicate use one cpu in more > than one cell. > > Signed-off-by: Luyao Huang <lhuang@xxxxxxxxxx> > --- > v3: remove the max vcpu check, just add a check when > parse the numa settings, and change the subject. > > src/conf/numa_conf.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c > index 7ad3f66..e25d7a8 100644 > --- a/src/conf/numa_conf.c > +++ b/src/conf/numa_conf.c > @@ -738,6 +738,15 @@ virDomainNumaDefCPUParseXML(virDomainNumaPtr def, > } > VIR_FREE(tmp); > > + for (j = 0; j < i; j++) { > + if (virBitmapOverlaps(def->mem_nodes[j].cpumask, > + def->mem_nodes[i].cpumask)) { > + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, > + _("NUMA cells %zu and %zu have overlapping vCPU ids"), i, j); > + goto cleanup; > + } > + } > + > ctxt->node = nodes[i]; > if (virDomainParseMemory("./@memory", "./@unit", ctxt, > &def->mem_nodes[cur_cell].mem, true, false) < 0) > Even though this does not compile, I'm squashing in the obvious fix, ACKing and pushing. Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list