diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 09e213e48d..c9a622e75a 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4531,16 +4531,12 @@ qemuDomainDefTsegPostParse(virDomainDef *def, * Returns: 0 on success, -1 on error */ int -qemuDomainDefNumaCPUsRectify(virDomainDef *def, virQEMUCaps *qemuCaps) +qemuDomainDefNumaCPUsRectify(virDomainDef *def, + virQEMUCaps *qemuCaps G_GNUC_UNUSED) { unsigned int vcpusMax, numacpus; - /* QEMU_CAPS_NUMA tells us if QEMU is able to handle disjointed - * NUMA CPU ranges. The filling process will create a disjointed - * setup in node0 most of the time. Do not proceed if QEMU - * can't handle it.*/ - if (virDomainNumaGetNodeCount(def->numa) == 0 || - !virQEMUCapsGet(qemuCaps, QEMU_CAPS_NUMA)) + if (virDomainNumaGetNodeCount(def->numa) == 0) return 0; vcpusMax = virDomainDefGetVcpusMax(def); diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 1192bf1804..78c68a99d0 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -983,27 +983,6 @@ static int qemuValidateDomainDefNuma(const virDomainDef *def, virQEMUCaps *qemuCaps) { - size_t ncells = virDomainNumaGetNodeCount(def->numa); - size_t i; - - for (i = 0; i < ncells; i++) { - virBitmap *cpumask = virDomainNumaGetNodeCpumask(def->numa, i); - - if (cpumask) { - g_autofree char * cpumaskStr = NULL; - if (!(cpumaskStr = virBitmapFormat(cpumask))) - return -1; - - if (strchr(cpumaskStr, ',') && - !virQEMUCapsGet(qemuCaps, QEMU_CAPS_NUMA)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("disjoint NUMA cpu ranges are not supported " - "with this QEMU")); - return -1; - } - } - } - if (virDomainNumaHasHMAT(def->numa)) { if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_NUMA_HMAT)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", diff --git a/tests/qemuxml2argvdata/cpu-numa-disjoint.err b/tests/qemuxml2argvdata/cpu-numa-disjoint.err deleted file mode 100644 index ff4b1cce2e..0000000000 --- a/tests/qemuxml2argvdata/cpu-numa-disjoint.err +++ /dev/null @@ -1 +0,0 @@ -unsupported configuration: disjoint NUMA cpu ranges are not supported with this QEMU diff --git a/tests/qemuxml2argvdata/fd-memory-numa-topology2.args b/tests/qemuxml2argvdata/fd-memory-numa-topology2.args index 9d8866d914..10952872bf 100644 --- a/tests/qemuxml2argvdata/fd-memory-numa-topology2.args +++ b/tests/qemuxml2argvdata/fd-memory-numa-topology2.args @@ -16,7 +16,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-instance-00000092/.config \ -overcommit mem-lock=off \ -smp 20,sockets=1,cores=8,threads=1 \ -object memory-backend-file,id=ram-node0,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node0,share=off,prealloc=on,size=15032385536 \ --numa node,nodeid=0,cpus=0-7,memdev=ram-node0 \ +-numa node,nodeid=0,cpus=0-7,cpus=16-19,memdev=ram-node0 \ -object memory-backend-file,id=ram-node1,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node1,share=on,prealloc=on,size=15032385536 \ -numa node,nodeid=1,cpus=8-15,memdev=ram-node1 \ -uuid 126f2720-6f8e-45ab-a886-ec9277079a67 \ diff --git a/tests/qemuxml2argvdata/fd-memory-numa-topology2.xml b/tests/qemuxml2argvdata/fd-memory-numa-topology2.xml index f6af88a2a8..5b84a49796 100644 --- a/tests/qemuxml2argvdata/fd-memory-numa-topology2.xml +++ b/tests/qemuxml2argvdata/fd-memory-numa-topology2.xml @@ -16,7 +16,7 @@ - + diff --git a/tests/qemuxml2argvdata/fd-memory-numa-topology3.args b/tests/qemuxml2argvdata/fd-memory-numa-topology3.args index 39ab4e0f2d..e9cb1f0fa5 100644 --- a/tests/qemuxml2argvdata/fd-memory-numa-topology3.args +++ b/tests/qemuxml2argvdata/fd-memory-numa-topology3.args @@ -16,7 +16,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-instance-00000092/.config \ -overcommit mem-lock=off \ -smp 32,sockets=1,cores=24,threads=1 \ -object memory-backend-file,id=ram-node0,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node0,share=on,prealloc=on,size=15032385536 \ --numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +-numa node,nodeid=0,cpus=0-1,cpus=6-31,memdev=ram-node0 \ -object memory-backend-file,id=ram-node1,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node1,share=on,prealloc=on,size=15032385536 \ -numa node,nodeid=1,cpus=2-3,memdev=ram-node1 \ -object memory-backend-file,id=ram-node2,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node2,share=off,prealloc=on,size=15032385536 \ diff --git a/tests/qemuxml2argvdata/fd-memory-numa-topology3.xml b/tests/qemuxml2argvdata/fd-memory-numa-topology3.xml index 1bf006c21c..1b8fd7dfee 100644 --- a/tests/qemuxml2argvdata/fd-memory-numa-topology3.xml +++ b/tests/qemuxml2argvdata/fd-memory-numa-topology3.xml @@ -16,7 +16,7 @@ - + diff --git a/tests/qemuxml2argvdata/numatune-memnode.err b/tests/qemuxml2argvdata/numatune-memnode.err deleted file mode 100644 index ff4b1cce2e..0000000000 --- a/tests/qemuxml2argvdata/numatune-memnode.err +++ /dev/null @@ -1 +0,0 @@ -unsupported configuration: disjoint NUMA cpu ranges are not supported with this QEMU diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index bf3465ee15..dd2460bc0b 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1866,7 +1866,6 @@ mymain(void) ARG_MIGRATE_FROM, "stdio", ARG_MIGRATE_FD, 7, ARG_QEMU_CAPS, - QEMU_CAPS_NUMA, QEMU_CAPS_LAST, ARG_END); @@ -1904,8 +1903,7 @@ mymain(void) DO_TEST_NOCAPS("cpu-numa2"); DO_TEST_NOCAPS("cpu-numa-no-memory-element"); DO_TEST_PARSE_ERROR_NOCAPS("cpu-numa3"); - DO_TEST_PARSE_ERROR_NOCAPS("cpu-numa-disjoint"); - DO_TEST("cpu-numa-disjoint", QEMU_CAPS_NUMA); + DO_TEST_NOCAPS("cpu-numa-disjoint"); DO_TEST_NOCAPS("cpu-numa-memshared"); DO_TEST("cpu-host-model", QEMU_CAPS_DEVICE_PCI_BRIDGE, @@ -1971,19 +1969,16 @@ mymain(void) DO_TEST_NOCAPS("numatune-memory"); DO_TEST_PARSE_ERROR_NOCAPS("numatune-memory-invalid-nodeset"); - DO_TEST("numatune-memnode", - QEMU_CAPS_NUMA); - DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnode"); + DO_TEST_NOCAPS("numatune-memnode"); DO_TEST_CAPS_VER("numatune-memnode", "5.2.0"); DO_TEST_CAPS_LATEST("numatune-memnode"); DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnode-invalid-mode"); DO_TEST_CAPS_LATEST("numatune-memnode-restrictive-mode"); DO_TEST_CAPS_LATEST("numatune-system-memory"); - DO_TEST("numatune-memnode-no-memory", - QEMU_CAPS_NUMA); + DO_TEST_NOCAPS("numatune-memnode-no-memory"); - DO_TEST("numatune-distances", QEMU_CAPS_NUMA); + DO_TEST_NOCAPS("numatune-distances"); DO_TEST_NOCAPS("numatune-no-vcpu"); DO_TEST_CAPS_LATEST("numatune-hmat"); @@ -2632,16 +2627,16 @@ mymain(void) DO_TEST_PARSE_ERROR("memory-hotplug-nonuma", QEMU_CAPS_DEVICE_PC_DIMM); DO_TEST_PARSE_ERROR_NOCAPS("memory-hotplug-invalid-targetnode"); DO_TEST_NOCAPS("memory-hotplug"); - DO_TEST("memory-hotplug", QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA); - DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA); + DO_TEST("memory-hotplug", QEMU_CAPS_DEVICE_PC_DIMM); + DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM); DO_TEST_CAPS_LATEST("memory-hotplug-dimm-addr"); - DO_TEST("memory-hotplug-ppc64-nonuma", QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA, + DO_TEST("memory-hotplug-ppc64-nonuma", QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE); DO_TEST_FULL("memory-hotplug-ppc64-nonuma-abi-update", "", ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE, ARG_QEMU_CAPS, QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM, - QEMU_CAPS_NUMA, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, + QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, QEMU_CAPS_LAST, ARG_END); DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm"); diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 40763607ba..45e16ce02d 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -924,14 +924,14 @@ mymain(void) DO_TEST_NOCAPS("cpu-numa2"); DO_TEST_NOCAPS("cpu-numa-no-memory-element"); DO_TEST_NOCAPS("cpu-numa-disordered"); - DO_TEST("cpu-numa-disjoint", QEMU_CAPS_NUMA); + DO_TEST_NOCAPS("cpu-numa-disjoint"); DO_TEST_NOCAPS("cpu-numa-memshared"); DO_TEST_NOCAPS("numatune-auto-prefer"); - DO_TEST("numatune-memnode", QEMU_CAPS_NUMA); + DO_TEST_NOCAPS("numatune-memnode"); DO_TEST_NOCAPS("numatune-memnode-no-memory"); - DO_TEST("numatune-distances", QEMU_CAPS_NUMA); - DO_TEST("numatune-no-vcpu", QEMU_CAPS_NUMA); + DO_TEST_NOCAPS("numatune-distances"); + DO_TEST_NOCAPS("numatune-no-vcpu"); DO_TEST("numatune-hmat", QEMU_CAPS_NUMA_HMAT); DO_TEST_CAPS_LATEST("numatune-memnode-restrictive-mode"); @@ -1023,13 +1023,13 @@ mymain(void) /* SVE aarch64 CPU features work on modern QEMU */ DO_TEST_CAPS_ARCH_LATEST("aarch64-features-sve", "aarch64"); - DO_TEST("memory-hotplug-ppc64-nonuma", QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA, + DO_TEST("memory-hotplug-ppc64-nonuma", QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE); DO_TEST_FULL("memory-hotplug-ppc64-nonuma-abi-update", "", WHEN_BOTH, ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE, ARG_QEMU_CAPS, QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM, - QEMU_CAPS_NUMA, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, + QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, QEMU_CAPS_LAST, ARG_END); DO_TEST_NOCAPS("memory-hotplug"); DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM);