From: Marc-André Lureau <marcandre.lureau(a)redhat.com>
QEMU 3.1 should only expose the property if the host is actually
capable of creating hugetable-backed memfd. However, it may fail
at runtime depending on requested "hugetlbsize".
Signed-off-by: Marc-André Lureau <marcandre.lureau(a)redhat.com>
---
src/qemu/qemu_capabilities.c | 8 ++
src/qemu/qemu_capabilities.h | 1 +
.../caps_2.12.0.aarch64.replies | 94 ++++++++++++---
.../caps_2.12.0.aarch64.xml | 3 +-
.../caps_2.12.0.ppc64.replies | 90 +++++++++++---
.../caps_2.12.0.ppc64.xml | 3 +-
.../caps_2.12.0.s390x.replies | 98 ++++++++++++----
.../caps_2.12.0.s390x.xml | 3 +-
.../caps_2.12.0.x86_64.replies | 110 +++++++++++++-----
.../caps_2.12.0.x86_64.xml | 3 +-
.../caps_3.0.0.ppc64.replies | 90 +++++++++++---
.../qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 3 +-
.../caps_3.0.0.riscv32.replies | 86 +++++++++++---
.../caps_3.0.0.riscv32.xml | 1 +
.../caps_3.0.0.riscv64.replies | 86 +++++++++++---
.../caps_3.0.0.riscv64.xml | 1 +
.../caps_3.0.0.x86_64.replies | 110 +++++++++++++-----
.../caps_3.0.0.x86_64.xml | 3 +-
18 files changed, 637 insertions(+), 156 deletions(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 2c2f193aae..9d8a18c7ff 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -509,6 +509,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
"vfio-pci.display",
"blockdev",
"memory-backend-memfd",
+ "memory-backend-memfd.hugetlb",
);
@@ -1439,6 +1440,10 @@ static struct virQEMUCapsStringFlags
virQEMUCapsObjectPropsMemoryBackendFile[] =
{ "discard-data", QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD },
};
+static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsMemoryBackendMemfd[] = {
+ { "hugetlb", QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB },
+};
+
static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsSPAPRMachine[] = {
{ "cap-hpt-max-page-size", QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE
},
{ "cap-htm", QEMU_CAPS_MACHINE_PSERIES_CAP_HTM },
@@ -1448,6 +1453,9 @@ static virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = {
{ "memory-backend-file", virQEMUCapsObjectPropsMemoryBackendFile,
ARRAY_CARDINALITY(virQEMUCapsObjectPropsMemoryBackendFile),
QEMU_CAPS_OBJECT_MEMORY_FILE },
+ { "memory-backend-memfd", virQEMUCapsObjectPropsMemoryBackendMemfd,
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsMemoryBackendMemfd),
+ QEMU_CAPS_OBJECT_MEMORY_FILE },
{ "spapr-machine", virQEMUCapsObjectPropsSPAPRMachine,
ARRAY_CARDINALITY(virQEMUCapsObjectPropsSPAPRMachine),
-1 },
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index 24ce4545a4..4ab2a6061e 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -493,6 +493,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check
*/
QEMU_CAPS_VFIO_PCI_DISPLAY, /* -device vfio-pci.display */
QEMU_CAPS_BLOCKDEV, /* -blockdev and blockdev-add are supported */
QEMU_CAPS_OBJECT_MEMORY_MEMFD, /* -object memory-backend-memfd */
+ QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB, /* -object memory-backend-memfd.hugetlb */
QEMU_CAPS_LAST /* this must always be the last item */
} virQEMUCapsFlags;
diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.replies
b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.replies
index db5b5140d5..7ce37bc27f 100644
--- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.replies
+++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.replies
@@ -5551,13 +5551,71 @@
{
"execute": "qom-list-properties",
"arguments": {
- "typename": "spapr-machine"
+ "typename": "memory-backend-memfd"
},
"id": "libvirt-35"
}
{
- "id": "libvirt-35",
+ "return": [
+ {
+ "name": "policy",
+ "type": "HostMemPolicy"
+ },
+ {
+ "name": "share",
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "type": "int"
+ },
+ {
+ "name": "prealloc",
+ "type": "bool"
+ },
+ {
+ "name": "dump",
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "merge",
+ "type": "bool"
+ },
+ {
+ "name": "seal",
+ "type": "bool"
+ },
+ {
+ "name": "hugetlbsize",
+ "type": "int"
+ },
+ {
+ "name": "hugetlb",
+ "type": "bool"
+ },
+ {
+ "name": "type",
+ "type": "string"
+ }
+ ],
+ "id": "libvirt-35"
+}
+
+{
+ "execute": "qom-list-properties",
+ "arguments": {
+ "typename": "spapr-machine"
+ },
+ "id": "libvirt-36"
+}
+
+{
+ "id": "libvirt-36",
"error": {
"class": "DeviceNotFound",
"desc": "Class 'spapr-machine' not found"
@@ -5566,7 +5624,7 @@
{
"execute": "query-machines",
- "id": "libvirt-36"
+ "id": "libvirt-37"
}
{
@@ -5863,12 +5921,12 @@
"cpu-max": 1
}
],
- "id": "libvirt-36"
+ "id": "libvirt-37"
}
{
"execute": "query-cpu-definitions",
- "id": "libvirt-37"
+ "id": "libvirt-38"
}
{
@@ -6044,35 +6102,35 @@
"static": false
}
],
- "id": "libvirt-37"
+ "id": "libvirt-38"
}
{
"execute": "query-tpm-models",
- "id": "libvirt-38"
+ "id": "libvirt-39"
}
{
"return": [
],
- "id": "libvirt-38"
+ "id": "libvirt-39"
}
{
"execute": "query-tpm-types",
- "id": "libvirt-39"
+ "id": "libvirt-40"
}
{
"return": [
"emulator"
],
- "id": "libvirt-39"
+ "id": "libvirt-40"
}
{
"execute": "query-command-line-options",
- "id": "libvirt-40"
+ "id": "libvirt-41"
}
{
@@ -7233,12 +7291,12 @@
"option": "drive"
}
],
- "id": "libvirt-40"
+ "id": "libvirt-41"
}
{
"execute": "query-migrate-capabilities",
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
{
@@ -7300,12 +7358,12 @@
"capability": "dirty-bitmaps"
}
],
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
{
"execute": "query-qmp-schema",
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
{
@@ -18673,12 +18731,12 @@
"meta-type": "object"
}
],
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
{
"execute": "query-gic-capabilities",
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
{
@@ -18694,7 +18752,7 @@
"kernel": false
}
],
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
{
diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml
b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml
index a1f5111fc4..5d5be965f0 100644
--- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml
@@ -170,9 +170,10 @@
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
<flag name='memory-backend-memfd'/>
+ <flag name='memory-backend-memfd.hugetlb'/>
<version>2011090</version>
<kvmVersion>0</kvmVersion>
- <microcodeVersion>347144</microcodeVersion>
+ <microcodeVersion>347959</microcodeVersion>
<package>v2.12.0-rc0</package>
<arch>aarch64</arch>
<cpu type='kvm' name='pxa262'/>
diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.replies
b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.replies
index 786cb1844a..4ba3abfac1 100644
--- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.replies
+++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.replies
@@ -5606,11 +5606,69 @@
{
"execute": "qom-list-properties",
"arguments": {
- "typename": "spapr-machine"
+ "typename": "memory-backend-memfd"
},
"id": "libvirt-36"
}
+{
+ "return": [
+ {
+ "name": "policy",
+ "type": "HostMemPolicy"
+ },
+ {
+ "name": "share",
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "type": "int"
+ },
+ {
+ "name": "prealloc",
+ "type": "bool"
+ },
+ {
+ "name": "dump",
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "merge",
+ "type": "bool"
+ },
+ {
+ "name": "seal",
+ "type": "bool"
+ },
+ {
+ "name": "hugetlbsize",
+ "type": "int"
+ },
+ {
+ "name": "hugetlb",
+ "type": "bool"
+ },
+ {
+ "name": "type",
+ "type": "string"
+ }
+ ],
+ "id": "libvirt-36"
+}
+
+{
+ "execute": "qom-list-properties",
+ "arguments": {
+ "typename": "spapr-machine"
+ },
+ "id": "libvirt-37"
+}
+
{
"return": [
{
@@ -5769,12 +5827,12 @@
"type": "bool"
}
],
- "id": "libvirt-36"
+ "id": "libvirt-37"
}
{
"execute": "query-machines",
- "id": "libvirt-37"
+ "id": "libvirt-38"
}
{
@@ -5912,12 +5970,12 @@
"cpu-max": 1
}
],
- "id": "libvirt-37"
+ "id": "libvirt-38"
}
{
"execute": "query-cpu-definitions",
- "id": "libvirt-38"
+ "id": "libvirt-39"
}
{
@@ -8113,35 +8171,35 @@
"static": false
}
],
- "id": "libvirt-38"
+ "id": "libvirt-39"
}
{
"execute": "query-tpm-models",
- "id": "libvirt-39"
+ "id": "libvirt-40"
}
{
"return": [
],
- "id": "libvirt-39"
+ "id": "libvirt-40"
}
{
"execute": "query-tpm-types",
- "id": "libvirt-40"
+ "id": "libvirt-41"
}
{
"return": [
"emulator"
],
- "id": "libvirt-40"
+ "id": "libvirt-41"
}
{
"execute": "query-command-line-options",
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
{
@@ -9297,12 +9355,12 @@
"option": "drive"
}
],
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
{
"execute": "query-migrate-capabilities",
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
{
@@ -9364,12 +9422,12 @@
"capability": "dirty-bitmaps"
}
],
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
{
"execute": "query-qmp-schema",
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
{
@@ -20737,7 +20795,7 @@
"meta-type": "object"
}
],
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
{
diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml
b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml
index c246e5c94a..703fa86de7 100644
--- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml
@@ -168,9 +168,10 @@
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
<flag name='memory-backend-memfd'/>
+ <flag name='memory-backend-memfd.hugetlb'/>
<version>2011090</version>
<kvmVersion>0</kvmVersion>
- <microcodeVersion>427928</microcodeVersion>
+ <microcodeVersion>428743</microcodeVersion>
<package>v2.12.0-rc0</package>
<arch>ppc64</arch>
<cpu type='kvm' name='default'/>
diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies
b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies
index 25a005c5cd..946d48e083 100644
--- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies
+++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies
@@ -3905,13 +3905,71 @@
{
"execute": "qom-list-properties",
"arguments": {
- "typename": "spapr-machine"
+ "typename": "memory-backend-memfd"
},
"id": "libvirt-35"
}
{
- "id": "libvirt-35",
+ "return": [
+ {
+ "name": "policy",
+ "type": "HostMemPolicy"
+ },
+ {
+ "name": "share",
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "type": "int"
+ },
+ {
+ "name": "prealloc",
+ "type": "bool"
+ },
+ {
+ "name": "dump",
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "merge",
+ "type": "bool"
+ },
+ {
+ "name": "seal",
+ "type": "bool"
+ },
+ {
+ "name": "hugetlbsize",
+ "type": "int"
+ },
+ {
+ "name": "hugetlb",
+ "type": "bool"
+ },
+ {
+ "name": "type",
+ "type": "string"
+ }
+ ],
+ "id": "libvirt-35"
+}
+
+{
+ "execute": "qom-list-properties",
+ "arguments": {
+ "typename": "spapr-machine"
+ },
+ "id": "libvirt-36"
+}
+
+{
+ "id": "libvirt-36",
"error": {
"class": "DeviceNotFound",
"desc": "Class 'spapr-machine' not found"
@@ -3920,7 +3978,7 @@
{
"execute": "query-machines",
- "id": "libvirt-36"
+ "id": "libvirt-37"
}
{
@@ -3978,12 +4036,12 @@
"alias": "s390-ccw-virtio"
}
],
- "id": "libvirt-36"
+ "id": "libvirt-37"
}
{
"execute": "query-cpu-definitions",
- "id": "libvirt-37"
+ "id": "libvirt-38"
}
{
@@ -4518,35 +4576,35 @@
"migration-safe": true
}
],
- "id": "libvirt-37"
+ "id": "libvirt-38"
}
{
"execute": "query-tpm-models",
- "id": "libvirt-38"
+ "id": "libvirt-39"
}
{
"return": [
],
- "id": "libvirt-38"
+ "id": "libvirt-39"
}
{
"execute": "query-tpm-types",
- "id": "libvirt-39"
+ "id": "libvirt-40"
}
{
"return": [
"emulator"
],
- "id": "libvirt-39"
+ "id": "libvirt-40"
}
{
"execute": "query-command-line-options",
- "id": "libvirt-40"
+ "id": "libvirt-41"
}
{
@@ -5671,12 +5729,12 @@
"option": "drive"
}
],
- "id": "libvirt-40"
+ "id": "libvirt-41"
}
{
"execute": "query-migrate-capabilities",
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
{
@@ -5738,12 +5796,12 @@
"capability": "dirty-bitmaps"
}
],
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
{
"execute": "query-qmp-schema",
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
{
@@ -17111,7 +17169,7 @@
"meta-type": "object"
}
],
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
{
@@ -17122,7 +17180,7 @@
"name": "host"
}
},
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
{
@@ -17160,7 +17218,7 @@
}
}
},
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
{
@@ -17174,11 +17232,11 @@
}
}
},
- "id": "libvirt-44"
+ "id": "libvirt-45"
}
{
- "id": "libvirt-44",
+ "id": "libvirt-45",
"error": {
"class": "GenericError",
"desc": "Property '.migratable' not found"
diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml
b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml
index 2e6baf42a7..dd9125e2a5 100644
--- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml
+++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml
@@ -134,9 +134,10 @@
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
<flag name='memory-backend-memfd'/>
+ <flag name='memory-backend-memfd.hugetlb'/>
<version>2012000</version>
<kvmVersion>0</kvmVersion>
- <microcodeVersion>375593</microcodeVersion>
+ <microcodeVersion>376408</microcodeVersion>
<package></package>
<arch>s390x</arch>
<hostCPU type='kvm' model='z14-base' migratability='no'>
diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies
b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies
index 9d7e653216..ec015f775a 100644
--- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies
@@ -4964,13 +4964,71 @@
{
"execute": "qom-list-properties",
"arguments": {
- "typename": "spapr-machine"
+ "typename": "memory-backend-memfd"
},
"id": "libvirt-40"
}
{
- "id": "libvirt-40",
+ "return": [
+ {
+ "name": "policy",
+ "type": "HostMemPolicy"
+ },
+ {
+ "name": "share",
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "type": "int"
+ },
+ {
+ "name": "prealloc",
+ "type": "bool"
+ },
+ {
+ "name": "dump",
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "merge",
+ "type": "bool"
+ },
+ {
+ "name": "seal",
+ "type": "bool"
+ },
+ {
+ "name": "hugetlbsize",
+ "type": "int"
+ },
+ {
+ "name": "hugetlb",
+ "type": "bool"
+ },
+ {
+ "name": "type",
+ "type": "string"
+ }
+ ],
+ "id": "libvirt-40"
+}
+
+{
+ "execute": "qom-list-properties",
+ "arguments": {
+ "typename": "spapr-machine"
+ },
+ "id": "libvirt-41"
+}
+
+{
+ "id": "libvirt-41",
"error": {
"class": "DeviceNotFound",
"desc": "Class 'spapr-machine' not found"
@@ -4979,7 +5037,7 @@
{
"execute": "query-machines",
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
{
@@ -5178,12 +5236,12 @@
"cpu-max": 255
}
],
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
{
"execute": "query-cpu-definitions",
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
{
@@ -5697,12 +5755,12 @@
"migration-safe": true
}
],
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
{
"execute": "query-tpm-models",
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
{
@@ -5710,12 +5768,12 @@
"tpm-crb",
"tpm-tis"
],
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
{
"execute": "query-tpm-types",
- "id": "libvirt-44"
+ "id": "libvirt-45"
}
{
@@ -5723,12 +5781,12 @@
"passthrough",
"emulator"
],
- "id": "libvirt-44"
+ "id": "libvirt-45"
}
{
"execute": "query-command-line-options",
- "id": "libvirt-45"
+ "id": "libvirt-46"
}
{
@@ -7015,12 +7073,12 @@
"option": "drive"
}
],
- "id": "libvirt-45"
+ "id": "libvirt-46"
}
{
"execute": "query-migrate-capabilities",
- "id": "libvirt-46"
+ "id": "libvirt-47"
}
{
@@ -7082,12 +7140,12 @@
"capability": "dirty-bitmaps"
}
],
- "id": "libvirt-46"
+ "id": "libvirt-47"
}
{
"execute": "query-qmp-schema",
- "id": "libvirt-47"
+ "id": "libvirt-48"
}
{
@@ -18455,7 +18513,7 @@
"meta-type": "object"
}
],
- "id": "libvirt-47"
+ "id": "libvirt-48"
}
{
@@ -18466,7 +18524,7 @@
"name": "host"
}
},
- "id": "libvirt-48"
+ "id": "libvirt-49"
}
{
@@ -18656,7 +18714,7 @@
}
}
},
- "id": "libvirt-48"
+ "id": "libvirt-49"
}
{
@@ -18848,7 +18906,7 @@
}
}
},
- "id": "libvirt-49"
+ "id": "libvirt-50"
}
{
@@ -19103,7 +19161,7 @@
}
}
},
- "id": "libvirt-49"
+ "id": "libvirt-50"
}
{
@@ -19117,7 +19175,7 @@
}
}
},
- "id": "libvirt-50"
+ "id": "libvirt-51"
}
{
@@ -19307,7 +19365,7 @@
}
}
},
- "id": "libvirt-50"
+ "id": "libvirt-51"
}
{
@@ -19499,7 +19557,7 @@
}
}
},
- "id": "libvirt-51"
+ "id": "libvirt-52"
}
{
@@ -19754,12 +19812,12 @@
}
}
},
- "id": "libvirt-51"
+ "id": "libvirt-52"
}
{
"execute": "query-sev-capabilities",
- "id": "libvirt-52"
+ "id": "libvirt-53"
}
{
@@ -19769,7 +19827,7 @@
"cert-chain":
"AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA",
"pdh":
"AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA"
},
- "id": "libvirt-52"
+ "id": "libvirt-53"
}
{
diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml
b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml
index 4b410997d1..704f905e39 100644
--- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml
@@ -212,9 +212,10 @@
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
<flag name='memory-backend-memfd'/>
+ <flag name='memory-backend-memfd.hugetlb'/>
<version>2011090</version>
<kvmVersion>0</kvmVersion>
- <microcodeVersion>415790</microcodeVersion>
+ <microcodeVersion>416605</microcodeVersion>
<package>v2.12.0-rc0</package>
<arch>x86_64</arch>
<hostCPU type='kvm' model='base' migratability='yes'>
diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.replies
b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.replies
index 932c418f3f..42a14d6688 100644
--- a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.replies
+++ b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.replies
@@ -5689,11 +5689,69 @@
{
"execute": "qom-list-properties",
"arguments": {
- "typename": "spapr-machine"
+ "typename": "memory-backend-memfd"
},
"id": "libvirt-36"
}
+{
+ "return": [
+ {
+ "name": "policy",
+ "type": "HostMemPolicy"
+ },
+ {
+ "name": "share",
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "type": "int"
+ },
+ {
+ "name": "prealloc",
+ "type": "bool"
+ },
+ {
+ "name": "dump",
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "merge",
+ "type": "bool"
+ },
+ {
+ "name": "seal",
+ "type": "bool"
+ },
+ {
+ "name": "hugetlbsize",
+ "type": "int"
+ },
+ {
+ "name": "hugetlb",
+ "type": "bool"
+ },
+ {
+ "name": "type",
+ "type": "string"
+ }
+ ],
+ "id": "libvirt-36"
+}
+
+{
+ "execute": "qom-list-properties",
+ "arguments": {
+ "typename": "spapr-machine"
+ },
+ "id": "libvirt-37"
+}
+
{
"return": [
{
@@ -5862,12 +5920,12 @@
"type": "bool"
}
],
- "id": "libvirt-36"
+ "id": "libvirt-37"
}
{
"execute": "query-machines",
- "id": "libvirt-37"
+ "id": "libvirt-38"
}
{
@@ -6010,12 +6068,12 @@
"cpu-max": 1
}
],
- "id": "libvirt-37"
+ "id": "libvirt-38"
}
{
"execute": "query-cpu-definitions",
- "id": "libvirt-38"
+ "id": "libvirt-39"
}
{
@@ -8211,35 +8269,35 @@
"static": false
}
],
- "id": "libvirt-38"
+ "id": "libvirt-39"
}
{
"execute": "query-tpm-models",
- "id": "libvirt-39"
+ "id": "libvirt-40"
}
{
"return": [
],
- "id": "libvirt-39"
+ "id": "libvirt-40"
}
{
"execute": "query-tpm-types",
- "id": "libvirt-40"
+ "id": "libvirt-41"
}
{
"return": [
"emulator"
],
- "id": "libvirt-40"
+ "id": "libvirt-41"
}
{
"execute": "query-command-line-options",
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
{
@@ -9369,12 +9427,12 @@
"option": "drive"
}
],
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
{
"execute": "query-migrate-capabilities",
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
{
@@ -9444,12 +9502,12 @@
"capability": "late-block-activate"
}
],
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
{
"execute": "query-qmp-schema",
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
{
@@ -21608,7 +21666,7 @@
"meta-type": "object"
}
],
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
{
diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml
b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml
index a9967d67a3..fe7b831144 100644
--- a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml
+++ b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml
@@ -168,9 +168,10 @@
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
<flag name='memory-backend-memfd'/>
+ <flag name='memory-backend-memfd.hugetlb'/>
<version>2012050</version>
<kvmVersion>0</kvmVersion>
- <microcodeVersion>446365</microcodeVersion>
+ <microcodeVersion>447180</microcodeVersion>
<package>v2.12.0-1689-g518d23a</package>
<arch>ppc64</arch>
<cpu type='kvm' name='default'/>
diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.replies
b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.replies
index 97eeec3dbc..11cfbbc654 100644
--- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.replies
+++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.replies
@@ -1821,13 +1821,71 @@
{
"execute": "qom-list-properties",
"arguments": {
- "typename": "spapr-machine"
+ "typename": "memory-backend-memfd"
},
"id": "libvirt-31"
}
{
- "id": "libvirt-31",
+ "return": [
+ {
+ "name": "policy",
+ "type": "HostMemPolicy"
+ },
+ {
+ "name": "share",
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "type": "int"
+ },
+ {
+ "name": "prealloc",
+ "type": "bool"
+ },
+ {
+ "name": "dump",
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "merge",
+ "type": "bool"
+ },
+ {
+ "name": "seal",
+ "type": "bool"
+ },
+ {
+ "name": "hugetlbsize",
+ "type": "int"
+ },
+ {
+ "name": "hugetlb",
+ "type": "bool"
+ },
+ {
+ "name": "type",
+ "type": "string"
+ }
+ ],
+ "id": "libvirt-31"
+}
+
+{
+ "execute": "qom-list-properties",
+ "arguments": {
+ "typename": "spapr-machine"
+ },
+ "id": "libvirt-32"
+}
+
+{
+ "id": "libvirt-32",
"error": {
"class": "DeviceNotFound",
"desc": "Class 'spapr-machine' not found"
@@ -1836,7 +1894,7 @@
{
"execute": "query-machines",
- "id": "libvirt-32"
+ "id": "libvirt-33"
}
{
@@ -1873,23 +1931,23 @@
"cpu-max": 1
}
],
- "id": "libvirt-32"
+ "id": "libvirt-33"
}
{
"execute": "query-tpm-models",
- "id": "libvirt-33"
+ "id": "libvirt-34"
}
{
"return": [
],
- "id": "libvirt-33"
+ "id": "libvirt-34"
}
{
"execute": "query-tpm-types",
- "id": "libvirt-34"
+ "id": "libvirt-35"
}
{
@@ -1897,12 +1955,12 @@
"passthrough",
"emulator"
],
- "id": "libvirt-34"
+ "id": "libvirt-35"
}
{
"execute": "query-command-line-options",
- "id": "libvirt-35"
+ "id": "libvirt-36"
}
{
@@ -3027,12 +3085,12 @@
"option": "drive"
}
],
- "id": "libvirt-35"
+ "id": "libvirt-36"
}
{
"execute": "query-migrate-capabilities",
- "id": "libvirt-36"
+ "id": "libvirt-37"
}
{
@@ -3102,12 +3160,12 @@
"capability": "late-block-activate"
}
],
- "id": "libvirt-36"
+ "id": "libvirt-37"
}
{
"execute": "query-qmp-schema",
- "id": "libvirt-37"
+ "id": "libvirt-38"
}
{
@@ -14782,5 +14840,5 @@
"meta-type": "object"
}
],
- "id": "libvirt-37"
+ "id": "libvirt-38"
}
diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml
b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml
index 183ad7cc6c..892c40f632 100644
--- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml
+++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml
@@ -105,6 +105,7 @@
<flag name='tpm-emulator'/>
<flag name='egl-headless'/>
<flag name='memory-backend-memfd'/>
+ <flag name='memory-backend-memfd.hugetlb'/>
<version>3000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>0</microcodeVersion>
diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.replies
b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.replies
index 23188fffb6..71cbcb85fd 100644
--- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.replies
+++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.replies
@@ -1821,13 +1821,71 @@
{
"execute": "qom-list-properties",
"arguments": {
- "typename": "spapr-machine"
+ "typename": "memory-backend-memfd"
},
"id": "libvirt-31"
}
{
- "id": "libvirt-31",
+ "return": [
+ {
+ "name": "policy",
+ "type": "HostMemPolicy"
+ },
+ {
+ "name": "share",
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "type": "int"
+ },
+ {
+ "name": "prealloc",
+ "type": "bool"
+ },
+ {
+ "name": "dump",
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "merge",
+ "type": "bool"
+ },
+ {
+ "name": "seal",
+ "type": "bool"
+ },
+ {
+ "name": "hugetlbsize",
+ "type": "int"
+ },
+ {
+ "name": "hugetlb",
+ "type": "bool"
+ },
+ {
+ "name": "type",
+ "type": "string"
+ }
+ ],
+ "id": "libvirt-31"
+}
+
+{
+ "execute": "qom-list-properties",
+ "arguments": {
+ "typename": "spapr-machine"
+ },
+ "id": "libvirt-32"
+}
+
+{
+ "id": "libvirt-32",
"error": {
"class": "DeviceNotFound",
"desc": "Class 'spapr-machine' not found"
@@ -1836,7 +1894,7 @@
{
"execute": "query-machines",
- "id": "libvirt-32"
+ "id": "libvirt-33"
}
{
@@ -1873,23 +1931,23 @@
"cpu-max": 1
}
],
- "id": "libvirt-32"
+ "id": "libvirt-33"
}
{
"execute": "query-tpm-models",
- "id": "libvirt-33"
+ "id": "libvirt-34"
}
{
"return": [
],
- "id": "libvirt-33"
+ "id": "libvirt-34"
}
{
"execute": "query-tpm-types",
- "id": "libvirt-34"
+ "id": "libvirt-35"
}
{
@@ -1897,12 +1955,12 @@
"passthrough",
"emulator"
],
- "id": "libvirt-34"
+ "id": "libvirt-35"
}
{
"execute": "query-command-line-options",
- "id": "libvirt-35"
+ "id": "libvirt-36"
}
{
@@ -3027,12 +3085,12 @@
"option": "drive"
}
],
- "id": "libvirt-35"
+ "id": "libvirt-36"
}
{
"execute": "query-migrate-capabilities",
- "id": "libvirt-36"
+ "id": "libvirt-37"
}
{
@@ -3102,12 +3160,12 @@
"capability": "late-block-activate"
}
],
- "id": "libvirt-36"
+ "id": "libvirt-37"
}
{
"execute": "query-qmp-schema",
- "id": "libvirt-37"
+ "id": "libvirt-38"
}
{
@@ -14782,5 +14840,5 @@
"meta-type": "object"
}
],
- "id": "libvirt-37"
+ "id": "libvirt-38"
}
diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml
b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml
index f2f32e3025..0676cef108 100644
--- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml
+++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml
@@ -105,6 +105,7 @@
<flag name='tpm-emulator'/>
<flag name='egl-headless'/>
<flag name='memory-backend-memfd'/>
+ <flag name='memory-backend-memfd.hugetlb'/>
<version>3000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>0</microcodeVersion>
diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies
b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies
index fdab682f94..f06b44724d 100644
--- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies
@@ -5076,13 +5076,71 @@
{
"execute": "qom-list-properties",
"arguments": {
- "typename": "spapr-machine"
+ "typename": "memory-backend-memfd"
},
"id": "libvirt-40"
}
{
- "id": "libvirt-40",
+ "return": [
+ {
+ "name": "policy",
+ "type": "HostMemPolicy"
+ },
+ {
+ "name": "share",
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "type": "int"
+ },
+ {
+ "name": "prealloc",
+ "type": "bool"
+ },
+ {
+ "name": "dump",
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "merge",
+ "type": "bool"
+ },
+ {
+ "name": "seal",
+ "type": "bool"
+ },
+ {
+ "name": "hugetlbsize",
+ "type": "int"
+ },
+ {
+ "name": "hugetlb",
+ "type": "bool"
+ },
+ {
+ "name": "type",
+ "type": "string"
+ }
+ ],
+ "id": "libvirt-40"
+}
+
+{
+ "execute": "qom-list-properties",
+ "arguments": {
+ "typename": "spapr-machine"
+ },
+ "id": "libvirt-41"
+}
+
+{
+ "id": "libvirt-41",
"error": {
"class": "DeviceNotFound",
"desc": "Class 'spapr-machine' not found"
@@ -5091,7 +5149,7 @@
{
"execute": "query-machines",
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
{
@@ -5300,12 +5358,12 @@
"cpu-max": 255
}
],
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
{
"execute": "query-cpu-definitions",
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
{
@@ -5742,12 +5800,12 @@
"migration-safe": true
}
],
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
{
"execute": "query-tpm-models",
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
{
@@ -5755,12 +5813,12 @@
"tpm-crb",
"tpm-tis"
],
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
{
"execute": "query-tpm-types",
- "id": "libvirt-44"
+ "id": "libvirt-45"
}
{
@@ -5768,12 +5826,12 @@
"passthrough",
"emulator"
],
- "id": "libvirt-44"
+ "id": "libvirt-45"
}
{
"execute": "query-command-line-options",
- "id": "libvirt-45"
+ "id": "libvirt-46"
}
{
@@ -7072,12 +7130,12 @@
"option": "drive"
}
],
- "id": "libvirt-45"
+ "id": "libvirt-46"
}
{
"execute": "query-migrate-capabilities",
- "id": "libvirt-46"
+ "id": "libvirt-47"
}
{
@@ -7147,12 +7205,12 @@
"capability": "late-block-activate"
}
],
- "id": "libvirt-46"
+ "id": "libvirt-47"
}
{
"execute": "query-qmp-schema",
- "id": "libvirt-47"
+ "id": "libvirt-48"
}
{
@@ -19032,7 +19090,7 @@
"meta-type": "object"
}
],
- "id": "libvirt-47"
+ "id": "libvirt-48"
}
{
@@ -19043,7 +19101,7 @@
"name": "host"
}
},
- "id": "libvirt-48"
+ "id": "libvirt-49"
}
{
@@ -19236,7 +19294,7 @@
}
}
},
- "id": "libvirt-48"
+ "id": "libvirt-49"
}
{
@@ -19431,7 +19489,7 @@
}
}
},
- "id": "libvirt-49"
+ "id": "libvirt-50"
}
{
@@ -19694,7 +19752,7 @@
}
}
},
- "id": "libvirt-49"
+ "id": "libvirt-50"
}
{
@@ -19708,7 +19766,7 @@
}
}
},
- "id": "libvirt-50"
+ "id": "libvirt-51"
}
{
@@ -19901,7 +19959,7 @@
}
}
},
- "id": "libvirt-50"
+ "id": "libvirt-51"
}
{
@@ -20096,7 +20154,7 @@
}
}
},
- "id": "libvirt-51"
+ "id": "libvirt-52"
}
{
@@ -20359,16 +20417,16 @@
}
}
},
- "id": "libvirt-51"
+ "id": "libvirt-52"
}
{
"execute": "query-sev-capabilities",
- "id": "libvirt-52"
+ "id": "libvirt-53"
}
{
- "id": "libvirt-52",
+ "id": "libvirt-53",
"error": {
"class": "GenericError",
"desc": "SEV feature is not available"
diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml
b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml
index e4665af165..19354ed72a 100644
--- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml
@@ -214,9 +214,10 @@
<flag name='egl-headless'/>
<flag name='vfio-pci.display'/>
<flag name='memory-backend-memfd'/>
+ <flag name='memory-backend-memfd.hugetlb'/>
<version>3000000</version>
<kvmVersion>0</kvmVersion>
- <microcodeVersion>427391</microcodeVersion>
+ <microcodeVersion>428206</microcodeVersion>
<package>v3.0.0</package>
<arch>x86_64</arch>
<hostCPU type='kvm' model='base' migratability='yes'>
--
2.19.0.rc1