diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c index d13d293bce..7506e21e6f 100644 --- a/src/conf/numa_conf.c +++ b/src/conf/numa_conf.c @@ -769,7 +769,7 @@ virDomainNumaDefCPUFormat(virBufferPtr buf, virBufferAddLit(buf, "\n"); virBufferAdjustIndent(buf, 2); for (i = 0; i < ncells; i++) { - memAccess = def->cells[i].memAccess; + memAccess = virDomainNumaGetNodeMemoryAccessMode(def, i); if (!(cpustr = virBitmapFormat(virDomainNumaGetNodeCpumask(def, i)))) return -1; @@ -832,3 +832,11 @@ virDomainNumaGetNodeCpumask(virCPUDefPtr numa, { return numa->cells[node].cpumask; } + + +virNumaMemAccess +virDomainNumaGetNodeMemoryAccessMode(virCPUDefPtr numa, + size_t node) +{ + return numa->cells[node].memAccess; +} diff --git a/src/conf/numa_conf.h b/src/conf/numa_conf.h index ad12c72457..8ebce4982a 100644 --- a/src/conf/numa_conf.h +++ b/src/conf/numa_conf.h @@ -91,6 +91,9 @@ size_t virDomainNumaGetNodeCount(virCPUDefPtr numa) virBitmapPtr virDomainNumaGetNodeCpumask(virCPUDefPtr numa, size_t node) ATTRIBUTE_NONNULL(1); +virNumaMemAccess virDomainNumaGetNodeMemoryAccessMode(virCPUDefPtr numa, + size_t node) + ATTRIBUTE_NONNULL(1); /* * Formatters diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index d9b0e05e8a..ab3a014b55 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -631,6 +631,7 @@ virDomainNumaEquals; virDomainNumaFree; virDomainNumaGetNodeCount; virDomainNumaGetNodeCpumask; +virDomainNumaGetNodeMemoryAccessMode; virDomainNumaNew; virDomainNumatuneFormatNodeset; virDomainNumatuneFormatXML; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 8daa2999c2..d5cb190dc4 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -4558,7 +4558,8 @@ qemuBuildMemoryBackendStr(unsigned long long size, virDomainHugePagePtr hugepage = NULL; virDomainNumatuneMemMode mode; const long system_page_size = virGetSystemPageSizeKB(); - virNumaMemAccess memAccess = def->cpu->cells[guestNode].memAccess; + virNumaMemAccess memAccess = virDomainNumaGetNodeMemoryAccessMode(def->cpu, guestNode); + size_t i; char *mem_path = NULL; virBitmapPtr nodemask = NULL; @@ -7188,7 +7189,7 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg, if (rc == 0) needBackend = true; } else { - if (def->cpu->cells[i].memAccess) { + if (virDomainNumaGetNodeMemoryAccessMode(def->cpu, i)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Shared memory mapping is not supported " "with this QEMU"));