qemu_command.c: move NUMA memory backing check to qemu_validate.c

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
Daniel Henrique Barboza 2020-10-13 14:04:25 -03:00
parent 4b42c27ee7
commit c47b013992
3 changed files with 16 additions and 6 deletions

View File

@ -7291,11 +7291,6 @@ qemuBuildNumaCommandLine(virQEMUDriverConfigPtr cfg,
if (rc == 0)
needBackend = true;
}
} else if (needBackend) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("NUMA without specified memory backing is not "
"supported with this QEMU binary"));
goto cleanup;
}
if (!needBackend &&

View File

@ -701,6 +701,7 @@ qemuValidateDomainDefNuma(const virDomainDef *def,
bool hasMemoryCap = virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_RAM) ||
virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE) ||
virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_MEMFD);
bool needBacking = false;
if (virDomainNumatuneHasPerNodeBinding(def->numa) && !hasMemoryCap) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
@ -752,6 +753,20 @@ qemuValidateDomainDefNuma(const virDomainDef *def,
return -1;
}
if (virDomainNumaHasHMAT(def->numa) ||
!virQEMUCapsGetMachineNumaMemSupported(qemuCaps,
def->virtType,
def->os.machine)) {
needBacking = true;
}
if (needBacking && !hasMemoryCap) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("NUMA without specified memory backing is not "
"supported with this QEMU binary"));
return -1;
}
return 0;
}

View File

@ -1141,7 +1141,7 @@ mymain(void)
DO_TEST("numatune-memnode-no-memory", QEMU_CAPS_OBJECT_MEMORY_FILE);
DO_TEST("numatune-distances", QEMU_CAPS_NUMA, QEMU_CAPS_NUMA_DIST);
DO_TEST("numatune-no-vcpu", QEMU_CAPS_NUMA);
DO_TEST("numatune-hmat", QEMU_CAPS_NUMA_HMAT);
DO_TEST("numatune-hmat", QEMU_CAPS_NUMA_HMAT, QEMU_CAPS_OBJECT_MEMORY_RAM);
DO_TEST("bios-nvram", NONE);
DO_TEST("bios-nvram-os-interleave", NONE);