--- src/nodeinfo.c | 9 ++------- src/util/virnuma.c | 24 +++++++++++++++++++++++- src/util/virnuma.h | 2 ++ 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/nodeinfo.c b/src/nodeinfo.c index c73eee4..4f0d412 100644 --- a/src/nodeinfo.c +++ b/src/nodeinfo.c @@ -1513,11 +1513,6 @@ nodeGetFreeMemoryFake(void) } #if WITH_NUMACTL -# if LIBNUMA_API_VERSION <= 1 -# define NUMA_MAX_N_CPUS 4096 -# else -# define NUMA_MAX_N_CPUS (numa_all_cpus_ptr->size) -# endif # define n_bits(var) (8 * sizeof(var)) # define MASK_CPU_ISSET(mask, cpu) \ @@ -1537,7 +1532,7 @@ virNodeGetSiblingsList(const char *dir, int cpu_id) if (virFileReadAll(path, SYSFS_THREAD_SIBLINGS_LIST_LENGTH_MAX, &buf) < 0) goto cleanup; - if (virBitmapParse(buf, 0, &ret, NUMA_MAX_N_CPUS) < 0) + if (virBitmapParse(buf, 0, &ret, virNumaGetMaxCPUs()) < 0) goto cleanup; cleanup: @@ -1580,7 +1575,7 @@ nodeCapsInitNUMA(virCapsPtr caps) unsigned long long memory; virCapsHostNUMACellCPUPtr cpus = NULL; int ret = -1; - int max_n_cpus = NUMA_MAX_N_CPUS; + int max_n_cpus = virNumaGetMaxCPUs(); int mask_n_bytes = max_n_cpus / 8; int ncpus = 0; bool topology_failed = false; diff --git a/src/util/virnuma.c b/src/util/virnuma.c index 15a18e9..0530d64 100644 --- a/src/util/virnuma.c +++ b/src/util/virnuma.c @@ -21,10 +21,18 @@ #include <config.h> +#define NUMA_MAX_N_CPUS 4096 + #if WITH_NUMACTL # define NUMA_VERSION1_COMPATIBILITY 1 # include <numa.h> -#endif + +# if LIBNUMA_API_VERSION > 1 +# undef NUMA_MAX_N_CPUS +# define NUMA_MAX_N_CPUS (numa_all_cpus_ptr->size) +# endif + +#endif /* WITH_NUMACTL */ #include "virnuma.h" #include "vircommand.h" @@ -288,3 +296,17 @@ virNumaGetNodeMemory(int node ATTRIBUTE_UNUSED, return -1; } #endif + + +/** + * virNumaGetMaxCPUs: + * + * Get the maximum count of CPUs supportable in the host. + * + * Returns the count of CPUs supported. + */ +unsigned int +virNumaGetMaxCPUs(void) +{ + return NUMA_MAX_N_CPUS; +} diff --git a/src/util/virnuma.h b/src/util/virnuma.h index 7640d1b..62b2c0a 100644 --- a/src/util/virnuma.h +++ b/src/util/virnuma.h @@ -62,4 +62,6 @@ int virNumaGetNodeMemory(int node, unsigned long long *memsize, unsigned long long *memfree); +unsigned int virNumaGetMaxCPUs(void); + #endif /* __VIR_NUMA_H__ */ -- 1.8.3.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list