]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu_command.c: move NUMA memory backing check to qemu_validate.c
authorDaniel Henrique Barboza <danielhb413@gmail.com>
Tue, 13 Oct 2020 17:04:25 +0000 (14:04 -0300)
committerDaniel Henrique Barboza <danielhb413@gmail.com>
Thu, 15 Oct 2020 13:54:33 +0000 (10:54 -0300)
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
src/qemu/qemu_command.c
src/qemu/qemu_validate.c
tests/qemuxml2xmltest.c

index 34d57606f0150920d87b9cdc7349010c2d990628..225d1d7491c9d42a58b6a48ce2cc90f14185d854 100644 (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 &&
index dafef84bd7a9aaee2858ec947cb768fd8809fed3..f24e58c5ed75f44d243fb0a63088e5382132cec7 100644 (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;
 }
 
index 6c551f18abd76a1f640366705a0d34712af5585c..93287d0a55077f9e7311c75f4bb7bb958e874e24 100644 (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);