From ce34d90fb56c195924a0ef4d076d39ed4fc4cabc Mon Sep 17 00:00:00 2001 Message-Id: From: Michal Privoznik Date: Fri, 7 Aug 2015 17:30:16 +0200 Subject: [PATCH] numa_conf: Introduce virDomainNumaGetMaxCPUID https://bugzilla.redhat.com/show_bug.cgi?id=1176020 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 (cherry picked from commit 8f2535dec1fdd969e86aa39c8a2583c723341733) Signed-off-by: Michal Privoznik Signed-off-by: Jiri Denemark --- 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..ad9ebb1 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -679,6 +679,7 @@ virNodeDeviceObjUnlock; virDomainNumaCheckABIStability; virDomainNumaEquals; virDomainNumaFree; +virDomainNumaGetMaxCPUID; virDomainNumaGetMemorySize; virDomainNumaGetNodeCount; virDomainNumaGetNodeCpumask; -- 2.5.0