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 <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Michal Privoznik 2022-11-03 16:01:02 +01:00
parent 7addd1baa6
commit 8641fcfa63
6 changed files with 26 additions and 67 deletions

View File

@ -1725,7 +1725,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsMaxCPU[] = {
static virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = { static virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = {
{ "memory-backend-file", virQEMUCapsObjectPropsMemoryBackendFile, { "memory-backend-file", virQEMUCapsObjectPropsMemoryBackendFile,
G_N_ELEMENTS(virQEMUCapsObjectPropsMemoryBackendFile), G_N_ELEMENTS(virQEMUCapsObjectPropsMemoryBackendFile),
QEMU_CAPS_OBJECT_MEMORY_FILE }, -1 },
{ "memory-backend-memfd", virQEMUCapsObjectPropsMemoryBackendMemfd, { "memory-backend-memfd", virQEMUCapsObjectPropsMemoryBackendMemfd,
G_N_ELEMENTS(virQEMUCapsObjectPropsMemoryBackendMemfd), G_N_ELEMENTS(virQEMUCapsObjectPropsMemoryBackendMemfd),
QEMU_CAPS_OBJECT_MEMORY_MEMFD }, QEMU_CAPS_OBJECT_MEMORY_MEMFD },
@ -6096,12 +6096,9 @@ virQEMUCapsFillDomainMemoryBackingCaps(virQEMUCaps *qemuCaps,
VIR_DOMAIN_CAPS_ENUM_SET(memoryBacking->sourceType, VIR_DOMAIN_CAPS_ENUM_SET(memoryBacking->sourceType,
VIR_DOMAIN_MEMORY_SOURCE_MEMFD); 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_CAPS_ENUM_SET(memoryBacking->sourceType,
VIR_DOMAIN_MEMORY_SOURCE_ANONYMOUS); VIR_DOMAIN_MEMORY_SOURCE_ANONYMOUS,
VIR_DOMAIN_MEMORY_SOURCE_FILE);
} }

View File

@ -3472,17 +3472,10 @@ qemuBuildMemoryBackendProps(virJSONValue **backendProps,
rc = 1; rc = 1;
} else { } else {
/* otherwise check the required capability */ /* otherwise check the required capability */
if (STREQ(backendType, "memory-backend-file") && if (STREQ(backendType, "memory-backend-memfd") &&
!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE)) { !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_MEMORY_MEMFD)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("this qemu doesn't support the " _("this qemu doesn't support the memory-backend-memfd object"));
"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"));
return -1; return -1;
} }

View File

@ -983,19 +983,9 @@ static int
qemuValidateDomainDefNuma(const virDomainDef *def, qemuValidateDomainDefNuma(const virDomainDef *def,
virQEMUCaps *qemuCaps) virQEMUCaps *qemuCaps)
{ {
const long system_page_size = virGetSystemPageSizeKB();
size_t ncells = virDomainNumaGetNodeCount(def->numa); size_t ncells = virDomainNumaGetNodeCount(def->numa);
size_t i; 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++) { for (i = 0; i < ncells; i++) {
virBitmap *cpumask = virDomainNumaGetNodeCpumask(def->numa, i); virBitmap *cpumask = virDomainNumaGetNodeCpumask(def->numa, i);

View File

@ -1 +1 @@
unsupported configuration: huge pages per NUMA node are not supported with this QEMU two master hugepages detected: 2048 and 1048576

View File

@ -1234,8 +1234,7 @@ mymain(void)
DO_TEST_PARSE_ERROR_NOCAPS("hugepages-memaccess-invalid"); DO_TEST_PARSE_ERROR_NOCAPS("hugepages-memaccess-invalid");
DO_TEST_CAPS_LATEST("hugepages-memaccess"); DO_TEST_CAPS_LATEST("hugepages-memaccess");
DO_TEST_CAPS_LATEST("hugepages-memaccess2"); DO_TEST_CAPS_LATEST("hugepages-memaccess2");
DO_TEST_PARSE_ERROR("hugepages-memaccess3", DO_TEST_PARSE_ERROR_NOCAPS("hugepages-memaccess3");
QEMU_CAPS_OBJECT_MEMORY_FILE);
DO_TEST_CAPS_LATEST("hugepages-memaccess3"); DO_TEST_CAPS_LATEST("hugepages-memaccess3");
DO_TEST_CAPS_LATEST("hugepages-nvdimm"); DO_TEST_CAPS_LATEST("hugepages-nvdimm");
DO_TEST_NOCAPS("nosharepages"); DO_TEST_NOCAPS("nosharepages");
@ -1907,8 +1906,7 @@ mymain(void)
DO_TEST_PARSE_ERROR_NOCAPS("cpu-numa3"); DO_TEST_PARSE_ERROR_NOCAPS("cpu-numa3");
DO_TEST_PARSE_ERROR_NOCAPS("cpu-numa-disjoint"); DO_TEST_PARSE_ERROR_NOCAPS("cpu-numa-disjoint");
DO_TEST("cpu-numa-disjoint", QEMU_CAPS_NUMA); DO_TEST("cpu-numa-disjoint", QEMU_CAPS_NUMA);
DO_TEST_FAILURE_NOCAPS("cpu-numa-memshared"); DO_TEST_NOCAPS("cpu-numa-memshared");
DO_TEST("cpu-numa-memshared", QEMU_CAPS_OBJECT_MEMORY_FILE);
DO_TEST("cpu-host-model", DO_TEST("cpu-host-model",
QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_DMI_TO_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_PARSE_ERROR_NOCAPS("cputune-vcpusched-overlap");
DO_TEST("cputune-numatune", DO_TEST("cputune-numatune",
QEMU_CAPS_KVM, QEMU_CAPS_KVM,
QEMU_CAPS_OBJECT_IOTHREAD, QEMU_CAPS_OBJECT_IOTHREAD);
QEMU_CAPS_OBJECT_MEMORY_FILE);
DO_TEST("vcpu-placement-static", DO_TEST("vcpu-placement-static",
QEMU_CAPS_KVM, QEMU_CAPS_KVM,
QEMU_CAPS_OBJECT_IOTHREAD); QEMU_CAPS_OBJECT_IOTHREAD);
@ -1991,8 +1988,7 @@ mymain(void)
DO_TEST_CAPS_LATEST("numatune-hmat"); DO_TEST_CAPS_LATEST("numatune-hmat");
DO_TEST_NOCAPS("numatune-auto-nodeset-invalid"); DO_TEST_NOCAPS("numatune-auto-nodeset-invalid");
DO_TEST("numatune-auto-prefer", DO_TEST_NOCAPS("numatune-auto-prefer");
QEMU_CAPS_OBJECT_MEMORY_FILE);
DO_TEST_FAILURE_NOCAPS("numatune-static-nodeset-exceed-hostnode"); DO_TEST_FAILURE_NOCAPS("numatune-static-nodeset-exceed-hostnode");
DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnode-nocpu"); DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnode-nocpu");
DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnodes-problematic"); 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_PARSE_ERROR_NOCAPS("memory-hotplug-invalid-targetnode");
DO_TEST_NOCAPS("memory-hotplug"); DO_TEST_NOCAPS("memory-hotplug");
DO_TEST("memory-hotplug", QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA); 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-dimm", QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA);
QEMU_CAPS_OBJECT_MEMORY_FILE);
DO_TEST_CAPS_LATEST("memory-hotplug-dimm-addr"); 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_NUMA,
QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
QEMU_CAPS_OBJECT_MEMORY_FILE);
DO_TEST_FULL("memory-hotplug-ppc64-nonuma-abi-update", "", DO_TEST_FULL("memory-hotplug-ppc64-nonuma-abi-update", "",
ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE, ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
ARG_QEMU_CAPS, ARG_QEMU_CAPS,
QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM,
QEMU_CAPS_NUMA, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, QEMU_CAPS_NUMA, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
QEMU_CAPS_OBJECT_MEMORY_FILE,
QEMU_CAPS_LAST, QEMU_CAPS_LAST,
ARG_END); ARG_END);
DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm"); 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_VER("memory-hotplug-nvdimm-readonly", "5.2.0");
DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm-readonly"); DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm-readonly");
DO_TEST("memory-hotplug-nvdimm-ppc64", QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, DO_TEST("memory-hotplug-nvdimm-ppc64", QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
QEMU_CAPS_OBJECT_MEMORY_FILE,
QEMU_CAPS_DEVICE_NVDIMM); QEMU_CAPS_DEVICE_NVDIMM);
DO_TEST_FULL("memory-hotplug-nvdimm-ppc64-abi-update", "", DO_TEST_FULL("memory-hotplug-nvdimm-ppc64-abi-update", "",
ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE, ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
ARG_QEMU_CAPS, ARG_QEMU_CAPS,
QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
QEMU_CAPS_OBJECT_MEMORY_FILE,
QEMU_CAPS_DEVICE_NVDIMM, QEMU_CAPS_DEVICE_NVDIMM,
QEMU_CAPS_LAST, QEMU_CAPS_LAST,
ARG_END); ARG_END);
@ -2840,16 +2831,12 @@ mymain(void)
DO_TEST_CAPS_LATEST("virtio-options-video-packed"); DO_TEST_CAPS_LATEST("virtio-options-video-packed");
DO_TEST_PARSE_ERROR_NOCAPS("virtio-options-memballoon-freepage-reporting"); DO_TEST_PARSE_ERROR_NOCAPS("virtio-options-memballoon-freepage-reporting");
DO_TEST("fd-memory-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE, DO_TEST("fd-memory-numa-topology", QEMU_CAPS_KVM);
QEMU_CAPS_KVM); DO_TEST("fd-memory-numa-topology2", QEMU_CAPS_KVM);
DO_TEST("fd-memory-numa-topology2", QEMU_CAPS_OBJECT_MEMORY_FILE, DO_TEST("fd-memory-numa-topology3", QEMU_CAPS_KVM);
QEMU_CAPS_KVM);
DO_TEST("fd-memory-numa-topology3", QEMU_CAPS_OBJECT_MEMORY_FILE,
QEMU_CAPS_KVM);
DO_TEST_CAPS_LATEST("fd-memory-numa-topology4"); DO_TEST_CAPS_LATEST("fd-memory-numa-topology4");
DO_TEST("fd-memory-no-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE, DO_TEST("fd-memory-no-numa-topology", QEMU_CAPS_KVM);
QEMU_CAPS_KVM);
DO_TEST_CAPS_LATEST("memfd-memory-numa"); DO_TEST_CAPS_LATEST("memfd-memory-numa");
DO_TEST_CAPS_LATEST("memfd-memory-default-hugepage"); DO_TEST_CAPS_LATEST("memfd-memory-default-hugepage");

View File

@ -657,7 +657,6 @@ mymain(void)
DO_TEST_NOCAPS("seclabel-device-multiple"); DO_TEST_NOCAPS("seclabel-device-multiple");
DO_TEST_FULL("seclabel-dynamic-none-relabel", "", WHEN_INACTIVE, DO_TEST_FULL("seclabel-dynamic-none-relabel", "", WHEN_INACTIVE,
ARG_QEMU_CAPS, QEMU_CAPS_DEVICE_CIRRUS_VGA, ARG_QEMU_CAPS, QEMU_CAPS_DEVICE_CIRRUS_VGA,
QEMU_CAPS_OBJECT_MEMORY_FILE,
QEMU_CAPS_SPICE, QEMU_CAPS_LAST, QEMU_CAPS_SPICE, QEMU_CAPS_LAST,
ARG_END); ARG_END);
DO_TEST_NOCAPS("numad-static-vcpu-no-numatune"); 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-no-memory-element");
DO_TEST_NOCAPS("cpu-numa-disordered"); DO_TEST_NOCAPS("cpu-numa-disordered");
DO_TEST("cpu-numa-disjoint", QEMU_CAPS_NUMA); 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_NOCAPS("numatune-auto-prefer");
DO_TEST("numatune-memnode", QEMU_CAPS_NUMA, QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("numatune-memnode", QEMU_CAPS_NUMA);
DO_TEST("numatune-memnode-no-memory", QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST_NOCAPS("numatune-memnode-no-memory");
DO_TEST("numatune-distances", QEMU_CAPS_NUMA); DO_TEST("numatune-distances", QEMU_CAPS_NUMA);
DO_TEST("numatune-no-vcpu", QEMU_CAPS_NUMA); DO_TEST("numatune-no-vcpu", QEMU_CAPS_NUMA);
DO_TEST("numatune-hmat", QEMU_CAPS_NUMA_HMAT); 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_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_NUMA,
QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
QEMU_CAPS_OBJECT_MEMORY_FILE);
DO_TEST_FULL("memory-hotplug-ppc64-nonuma-abi-update", "", WHEN_BOTH, DO_TEST_FULL("memory-hotplug-ppc64-nonuma-abi-update", "", WHEN_BOTH,
ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE, ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
ARG_QEMU_CAPS, ARG_QEMU_CAPS,
QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM,
QEMU_CAPS_NUMA, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, 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_NOCAPS("memory-hotplug");
DO_TEST("memory-hotplug-dimm", 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_CAPS_LATEST("memory-hotplug-dimm-addr");
@ -1044,13 +1042,11 @@ mymain(void)
DO_TEST("memory-hotplug-nvdimm-readonly", QEMU_CAPS_DEVICE_NVDIMM, DO_TEST("memory-hotplug-nvdimm-readonly", QEMU_CAPS_DEVICE_NVDIMM,
QEMU_CAPS_DEVICE_NVDIMM_UNARMED); QEMU_CAPS_DEVICE_NVDIMM_UNARMED);
DO_TEST("memory-hotplug-nvdimm-ppc64", QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, DO_TEST("memory-hotplug-nvdimm-ppc64", QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
QEMU_CAPS_OBJECT_MEMORY_FILE,
QEMU_CAPS_DEVICE_NVDIMM); QEMU_CAPS_DEVICE_NVDIMM);
DO_TEST_FULL("memory-hotplug-nvdimm-ppc64-abi-update", "", WHEN_BOTH, DO_TEST_FULL("memory-hotplug-nvdimm-ppc64-abi-update", "", WHEN_BOTH,
ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE, ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
ARG_QEMU_CAPS, ARG_QEMU_CAPS,
QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
QEMU_CAPS_OBJECT_MEMORY_FILE,
QEMU_CAPS_DEVICE_NVDIMM, QEMU_CAPS_DEVICE_NVDIMM,
QEMU_CAPS_LAST, ARG_END); QEMU_CAPS_LAST, ARG_END);
DO_TEST_CAPS_LATEST("memory-hotplug-virtio-pmem"); DO_TEST_CAPS_LATEST("memory-hotplug-virtio-pmem");
@ -1087,16 +1083,12 @@ mymain(void)
DO_TEST_CAPS_LATEST("virtio-options"); DO_TEST_CAPS_LATEST("virtio-options");
DO_TEST("fd-memory-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE, DO_TEST("fd-memory-numa-topology", QEMU_CAPS_KVM);
QEMU_CAPS_KVM); DO_TEST("fd-memory-numa-topology2", QEMU_CAPS_KVM);
DO_TEST("fd-memory-numa-topology2", QEMU_CAPS_OBJECT_MEMORY_FILE, DO_TEST("fd-memory-numa-topology3", QEMU_CAPS_KVM);
QEMU_CAPS_KVM);
DO_TEST("fd-memory-numa-topology3", QEMU_CAPS_OBJECT_MEMORY_FILE,
QEMU_CAPS_KVM);
DO_TEST_CAPS_LATEST("fd-memory-numa-topology4"); DO_TEST_CAPS_LATEST("fd-memory-numa-topology4");
DO_TEST("fd-memory-no-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE, DO_TEST("fd-memory-no-numa-topology", QEMU_CAPS_KVM);
QEMU_CAPS_KVM);
DO_TEST_CAPS_LATEST("memfd-memory-numa"); DO_TEST_CAPS_LATEST("memfd-memory-numa");
DO_TEST_CAPS_LATEST("memfd-memory-default-hugepage"); DO_TEST_CAPS_LATEST("memfd-memory-default-hugepage");