From: Michal Privoznik Date: Thu, 3 Nov 2022 15:01:02 +0000 (+0100) Subject: qemu: Assume QEMU_CAPS_OBJECT_MEMORY_FILE X-Git-Tag: v8.10.0-rc1~175 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8641fcfa637f0ae2cc5eae629c82573324ecb5ac;p=thirdparty%2Flibvirt.git qemu: Assume QEMU_CAPS_OBJECT_MEMORY_FILE Introduced in QEMU's commit of v2.1.0-rc0~41^2~26 only for Linux, and later in v3.1.0-rc0~71^2~10 for all POSIX, the memory-backend-file is going to be present for all QEMU versions we support (4.2.0, currently). Therefore, we can assume the capability is always set and thus doesn't need to be checked for. Signed-off-by: Michal Privoznik Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 6e5037762a..329a120237 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1725,7 +1725,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsMaxCPU[] = { static virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = { { "memory-backend-file", virQEMUCapsObjectPropsMemoryBackendFile, G_N_ELEMENTS(virQEMUCapsObjectPropsMemoryBackendFile), - QEMU_CAPS_OBJECT_MEMORY_FILE }, + -1 }, { "memory-backend-memfd", virQEMUCapsObjectPropsMemoryBackendMemfd, G_N_ELEMENTS(virQEMUCapsObjectPropsMemoryBackendMemfd), QEMU_CAPS_OBJECT_MEMORY_MEMFD }, @@ -6096,12 +6096,9 @@ virQEMUCapsFillDomainMemoryBackingCaps(virQEMUCaps *qemuCaps, VIR_DOMAIN_CAPS_ENUM_SET(memoryBacking->sourceType, VIR_DOMAIN_MEMORY_SOURCE_MEMFD); - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE)) - VIR_DOMAIN_CAPS_ENUM_SET(memoryBacking->sourceType, - VIR_DOMAIN_MEMORY_SOURCE_FILE); - VIR_DOMAIN_CAPS_ENUM_SET(memoryBacking->sourceType, - VIR_DOMAIN_MEMORY_SOURCE_ANONYMOUS); + VIR_DOMAIN_MEMORY_SOURCE_ANONYMOUS, + VIR_DOMAIN_MEMORY_SOURCE_FILE); } diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 2a7146e6df..bcd30ef4f3 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -3472,17 +3472,10 @@ qemuBuildMemoryBackendProps(virJSONValue **backendProps, rc = 1; } else { /* otherwise check the required capability */ - if (STREQ(backendType, "memory-backend-file") && - !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE)) { + if (STREQ(backendType, "memory-backend-memfd") && + !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_MEMORY_MEMFD)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("this qemu doesn't support the " - "memory-backend-file object")); - return -1; - } else if (STREQ(backendType, "memory-backend-memfd") && - !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_MEMORY_MEMFD)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("this qemu doesn't support the " - "memory-backend-memfd object")); + _("this qemu doesn't support the memory-backend-memfd object")); return -1; } diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 5cc3c92a1f..1192bf1804 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -983,19 +983,9 @@ static int qemuValidateDomainDefNuma(const virDomainDef *def, virQEMUCaps *qemuCaps) { - const long system_page_size = virGetSystemPageSizeKB(); size_t ncells = virDomainNumaGetNodeCount(def->numa); size_t i; - if (def->mem.nhugepages && - def->mem.hugepages[0].size != system_page_size && - !virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("huge pages per NUMA node are not " - "supported with this QEMU")); - return -1; - } - for (i = 0; i < ncells; i++) { virBitmap *cpumask = virDomainNumaGetNodeCpumask(def->numa, i); diff --git a/tests/qemuxml2argvdata/hugepages-default-1G-nodeset-2M.err b/tests/qemuxml2argvdata/hugepages-default-1G-nodeset-2M.err index 8c0706fb8b..b103478bb8 100644 --- a/tests/qemuxml2argvdata/hugepages-default-1G-nodeset-2M.err +++ b/tests/qemuxml2argvdata/hugepages-default-1G-nodeset-2M.err @@ -1 +1 @@ -unsupported configuration: huge pages per NUMA node are not supported with this QEMU +two master hugepages detected: 2048 and 1048576 diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 4d02b0f97c..bf3465ee15 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1234,8 +1234,7 @@ mymain(void) DO_TEST_PARSE_ERROR_NOCAPS("hugepages-memaccess-invalid"); DO_TEST_CAPS_LATEST("hugepages-memaccess"); DO_TEST_CAPS_LATEST("hugepages-memaccess2"); - DO_TEST_PARSE_ERROR("hugepages-memaccess3", - QEMU_CAPS_OBJECT_MEMORY_FILE); + DO_TEST_PARSE_ERROR_NOCAPS("hugepages-memaccess3"); DO_TEST_CAPS_LATEST("hugepages-memaccess3"); DO_TEST_CAPS_LATEST("hugepages-nvdimm"); DO_TEST_NOCAPS("nosharepages"); @@ -1907,8 +1906,7 @@ mymain(void) 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_FAILURE_NOCAPS("cpu-numa-memshared"); - DO_TEST("cpu-numa-memshared", QEMU_CAPS_OBJECT_MEMORY_FILE); + DO_TEST_NOCAPS("cpu-numa-memshared"); DO_TEST("cpu-host-model", QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, @@ -1965,8 +1963,7 @@ mymain(void) DO_TEST_PARSE_ERROR_NOCAPS("cputune-vcpusched-overlap"); DO_TEST("cputune-numatune", QEMU_CAPS_KVM, - QEMU_CAPS_OBJECT_IOTHREAD, - QEMU_CAPS_OBJECT_MEMORY_FILE); + QEMU_CAPS_OBJECT_IOTHREAD); DO_TEST("vcpu-placement-static", QEMU_CAPS_KVM, QEMU_CAPS_OBJECT_IOTHREAD); @@ -1991,8 +1988,7 @@ mymain(void) DO_TEST_CAPS_LATEST("numatune-hmat"); DO_TEST_NOCAPS("numatune-auto-nodeset-invalid"); - DO_TEST("numatune-auto-prefer", - QEMU_CAPS_OBJECT_MEMORY_FILE); + DO_TEST_NOCAPS("numatune-auto-prefer"); DO_TEST_FAILURE_NOCAPS("numatune-static-nodeset-exceed-hostnode"); DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnode-nocpu"); DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnodes-problematic"); @@ -2637,18 +2633,15 @@ mymain(void) 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, - QEMU_CAPS_OBJECT_MEMORY_FILE); + DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA); 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, - QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, - QEMU_CAPS_OBJECT_MEMORY_FILE); + 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_OBJECT_MEMORY_FILE, QEMU_CAPS_LAST, ARG_END); DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm"); @@ -2662,13 +2655,11 @@ mymain(void) DO_TEST_CAPS_VER("memory-hotplug-nvdimm-readonly", "5.2.0"); DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm-readonly"); DO_TEST("memory-hotplug-nvdimm-ppc64", QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, - QEMU_CAPS_OBJECT_MEMORY_FILE, QEMU_CAPS_DEVICE_NVDIMM); DO_TEST_FULL("memory-hotplug-nvdimm-ppc64-abi-update", "", ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE, ARG_QEMU_CAPS, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, - QEMU_CAPS_OBJECT_MEMORY_FILE, QEMU_CAPS_DEVICE_NVDIMM, QEMU_CAPS_LAST, ARG_END); @@ -2840,16 +2831,12 @@ mymain(void) DO_TEST_CAPS_LATEST("virtio-options-video-packed"); DO_TEST_PARSE_ERROR_NOCAPS("virtio-options-memballoon-freepage-reporting"); - DO_TEST("fd-memory-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE, - QEMU_CAPS_KVM); - DO_TEST("fd-memory-numa-topology2", QEMU_CAPS_OBJECT_MEMORY_FILE, - QEMU_CAPS_KVM); - DO_TEST("fd-memory-numa-topology3", QEMU_CAPS_OBJECT_MEMORY_FILE, - QEMU_CAPS_KVM); + DO_TEST("fd-memory-numa-topology", QEMU_CAPS_KVM); + DO_TEST("fd-memory-numa-topology2", QEMU_CAPS_KVM); + DO_TEST("fd-memory-numa-topology3", QEMU_CAPS_KVM); DO_TEST_CAPS_LATEST("fd-memory-numa-topology4"); - DO_TEST("fd-memory-no-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE, - QEMU_CAPS_KVM); + DO_TEST("fd-memory-no-numa-topology", QEMU_CAPS_KVM); DO_TEST_CAPS_LATEST("memfd-memory-numa"); DO_TEST_CAPS_LATEST("memfd-memory-default-hugepage"); diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 7c2f525c68..40763607ba 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -657,7 +657,6 @@ mymain(void) DO_TEST_NOCAPS("seclabel-device-multiple"); DO_TEST_FULL("seclabel-dynamic-none-relabel", "", WHEN_INACTIVE, ARG_QEMU_CAPS, QEMU_CAPS_DEVICE_CIRRUS_VGA, - QEMU_CAPS_OBJECT_MEMORY_FILE, QEMU_CAPS_SPICE, QEMU_CAPS_LAST, ARG_END); DO_TEST_NOCAPS("numad-static-vcpu-no-numatune"); @@ -926,11 +925,11 @@ mymain(void) DO_TEST_NOCAPS("cpu-numa-no-memory-element"); DO_TEST_NOCAPS("cpu-numa-disordered"); DO_TEST("cpu-numa-disjoint", QEMU_CAPS_NUMA); - DO_TEST("cpu-numa-memshared", QEMU_CAPS_OBJECT_MEMORY_FILE); + DO_TEST_NOCAPS("cpu-numa-memshared"); DO_TEST_NOCAPS("numatune-auto-prefer"); - DO_TEST("numatune-memnode", QEMU_CAPS_NUMA, QEMU_CAPS_OBJECT_MEMORY_FILE); - DO_TEST("numatune-memnode-no-memory", QEMU_CAPS_OBJECT_MEMORY_FILE); + DO_TEST("numatune-memnode", QEMU_CAPS_NUMA); + DO_TEST_NOCAPS("numatune-memnode-no-memory"); DO_TEST("numatune-distances", QEMU_CAPS_NUMA); DO_TEST("numatune-no-vcpu", QEMU_CAPS_NUMA); DO_TEST("numatune-hmat", QEMU_CAPS_NUMA_HMAT); @@ -1025,14 +1024,13 @@ mymain(void) 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, - QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, - QEMU_CAPS_OBJECT_MEMORY_FILE); + 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_OBJECT_MEMORY_FILE, QEMU_CAPS_LAST, ARG_END); + QEMU_CAPS_LAST, ARG_END); DO_TEST_NOCAPS("memory-hotplug"); DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM); DO_TEST_CAPS_LATEST("memory-hotplug-dimm-addr"); @@ -1044,13 +1042,11 @@ mymain(void) DO_TEST("memory-hotplug-nvdimm-readonly", QEMU_CAPS_DEVICE_NVDIMM, QEMU_CAPS_DEVICE_NVDIMM_UNARMED); DO_TEST("memory-hotplug-nvdimm-ppc64", QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, - QEMU_CAPS_OBJECT_MEMORY_FILE, QEMU_CAPS_DEVICE_NVDIMM); DO_TEST_FULL("memory-hotplug-nvdimm-ppc64-abi-update", "", WHEN_BOTH, ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE, ARG_QEMU_CAPS, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, - QEMU_CAPS_OBJECT_MEMORY_FILE, QEMU_CAPS_DEVICE_NVDIMM, QEMU_CAPS_LAST, ARG_END); DO_TEST_CAPS_LATEST("memory-hotplug-virtio-pmem"); @@ -1087,16 +1083,12 @@ mymain(void) DO_TEST_CAPS_LATEST("virtio-options"); - DO_TEST("fd-memory-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE, - QEMU_CAPS_KVM); - DO_TEST("fd-memory-numa-topology2", QEMU_CAPS_OBJECT_MEMORY_FILE, - QEMU_CAPS_KVM); - DO_TEST("fd-memory-numa-topology3", QEMU_CAPS_OBJECT_MEMORY_FILE, - QEMU_CAPS_KVM); + DO_TEST("fd-memory-numa-topology", QEMU_CAPS_KVM); + DO_TEST("fd-memory-numa-topology2", QEMU_CAPS_KVM); + DO_TEST("fd-memory-numa-topology3", QEMU_CAPS_KVM); DO_TEST_CAPS_LATEST("fd-memory-numa-topology4"); - DO_TEST("fd-memory-no-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE, - QEMU_CAPS_KVM); + DO_TEST("fd-memory-no-numa-topology", QEMU_CAPS_KVM); DO_TEST_CAPS_LATEST("memfd-memory-numa"); DO_TEST_CAPS_LATEST("memfd-memory-default-hugepage");