This function should return the greatest CPU number set in /domain/cpu/numa/cell/@cpus. The idea is that we should compare the returned value against /domain/vcpu value. Yes, there exist users who think the following is a good idea: <vcpu placement='static'>4</vcpu> <cpu mode='host-model'> <model fallback='allow'/> <numa> <cell id='0' cpus='0-1' memory='1048576' unit='KiB'/> <cell id='1' cpus='9-10' memory='2097152' unit='KiB'/> </numa> </cpu> Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- src/conf/numa_conf.c | 17 +++++++++++++++++ src/conf/numa_conf.h | 3 +++ src/libvirt_private.syms | 1 + 3 files changed, 21 insertions(+) diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c index 57da215..5c123b9 100644 --- a/src/conf/numa_conf.c +++ b/src/conf/numa_conf.c @@ -847,6 +847,23 @@ virDomainNumaGetCPUCountTotal(virDomainNumaPtr numa) return ret; } +unsigned int +virDomainNumaGetMaxCPUID(virDomainNumaPtr numa) +{ + size_t i; + unsigned int ret = 0; + + for (i = 0; i < numa->nmem_nodes; i++) { + int bit; + + bit = virBitmapLastSetBit(virDomainNumaGetNodeCpumask(numa, i)); + if (bit > ret) + ret = bit; + } + + return ret; +} + virDomainNumaPtr virDomainNumaNew(void) diff --git a/src/conf/numa_conf.h b/src/conf/numa_conf.h index 6739065..90deacb 100644 --- a/src/conf/numa_conf.h +++ b/src/conf/numa_conf.h @@ -99,6 +99,9 @@ unsigned long long virDomainNumaGetNodeMemorySize(virDomainNumaPtr numa, unsigned long long virDomainNumaGetMemorySize(virDomainNumaPtr numa) ATTRIBUTE_NONNULL(1); +unsigned int +virDomainNumaGetMaxCPUID(virDomainNumaPtr numa); + /* * Formatters */ diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 0517c24..0b67bfe 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -684,6 +684,7 @@ virDomainNumaGetNodeCount; virDomainNumaGetNodeCpumask; virDomainNumaGetNodeMemoryAccessMode; virDomainNumaGetNodeMemorySize; +virDomainNumaGetMaxCPUID; virDomainNumaNew; virDomainNumaSetNodeMemorySize; virDomainNumatuneFormatNodeset; -- 2.4.6 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list