From 8f2535dec1fdd969e86aa39c8a2583c723341733 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Fri, 7 Aug 2015 16:31:57 +0200 Subject: [PATCH] numa_conf: Introduce virDomainNumaGetMaxCPUID 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: 4 Signed-off-by: Michal Privoznik --- 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 57da215aed..5c123b96b7 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 6739065339..90deacbd34 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 5d320b7306..e5d8437adf 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -679,6 +679,7 @@ virNodeDeviceObjUnlock; virDomainNumaCheckABIStability; virDomainNumaEquals; virDomainNumaFree; +virDomainNumaGetMaxCPUID; virDomainNumaGetMemorySize; virDomainNumaGetNodeCount; virDomainNumaGetNodeCpumask;