diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c index 8000415b2ed24b958eaacb6e3012ebf3138d15e8..d13d293bce9f0e48775aa9226f5d1a100cb35b2e 100644 --- a/src/conf/numa_conf.c +++ b/src/conf/numa_conf.c @@ -771,7 +771,7 @@ virDomainNumaDefCPUFormat(virBufferPtr buf, for (i = 0; i < ncells; i++) { memAccess = def->cells[i].memAccess; - if (!(cpustr = virBitmapFormat(def->cells[i].cpumask))) + if (!(cpustr = virBitmapFormat(virDomainNumaGetNodeCpumask(def, i)))) return -1; virBufferAddLit(buf, "ncells; i++) - ret += virBitmapCountBits(numa->cells[i].cpumask); + ret += virBitmapCountBits(virDomainNumaGetNodeCpumask(numa, i)); return ret; } @@ -824,3 +824,11 @@ virDomainNumaGetNodeCount(virCPUDefPtr numa) return numa->ncells; } + + +virBitmapPtr +virDomainNumaGetNodeCpumask(virCPUDefPtr numa, + size_t node) +{ + return numa->cells[node].cpumask; +} diff --git a/src/conf/numa_conf.h b/src/conf/numa_conf.h index 07759ed813543e0b7d21132bd1b9ce5e0a2b3e8e..ad12c724574559c263556fb53fa1b3bca94446a6 100644 --- a/src/conf/numa_conf.h +++ b/src/conf/numa_conf.h @@ -88,6 +88,9 @@ int virDomainNumatuneMaybeGetNodeset(virDomainNumaPtr numatune, size_t virDomainNumaGetNodeCount(virCPUDefPtr numa) ATTRIBUTE_NONNULL(1); +virBitmapPtr virDomainNumaGetNodeCpumask(virCPUDefPtr numa, + size_t node) + ATTRIBUTE_NONNULL(1); /* * Formatters diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 924ad37f6fa075ef26b090d0986fd3c29b56dd34..d9b0e05e8af2d3eaa2fd95bd40938882b7b5dcb6 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -630,6 +630,7 @@ virNodeDeviceObjUnlock; virDomainNumaEquals; virDomainNumaFree; virDomainNumaGetNodeCount; +virDomainNumaGetNodeCpumask; virDomainNumaNew; virDomainNumatuneFormatNodeset; virDomainNumatuneFormatXML; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index befb98279f5a097c1f181c8e80828e613cdc872b..8daa2999c2dd1d842170604b5d1416bf22d5c3aa 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7199,7 +7199,7 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg, for (i = 0; i < ncells; i++) { VIR_FREE(cpumask); - if (!(cpumask = virBitmapFormat(def->cpu->cells[i].cpumask))) + if (!(cpumask = virBitmapFormat(virDomainNumaGetNodeCpumask(def->cpu, i)))) goto cleanup; if (strchr(cpumask, ',') &&