From nobody Sat Apr 27 07:12:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1537190141454924.4294057590862; Mon, 17 Sep 2018 06:15:41 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.24]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3C865307D915; Mon, 17 Sep 2018 13:15:34 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0583C308BDBA; Mon, 17 Sep 2018 13:15:32 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id AC7B3181A12D; Mon, 17 Sep 2018 13:15:30 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w8HDFCAg002845 for ; Mon, 17 Sep 2018 09:15:12 -0400 Received: by smtp.corp.redhat.com (Postfix) id A6B1B30918A2; Mon, 17 Sep 2018 13:15:12 +0000 (UTC) Received: from localhost (ovpn-112-59.ams2.redhat.com [10.36.112.59]) by smtp.corp.redhat.com (Postfix) with ESMTP id 69A3C308BDBA; Mon, 17 Sep 2018 13:15:10 +0000 (UTC) From: marcandre.lureau@redhat.com To: libvir-list@redhat.com Date: Mon, 17 Sep 2018 17:14:55 +0400 Message-Id: <20180917131457.29055-2-marcandre.lureau@redhat.com> In-Reply-To: <20180917131457.29055-1-marcandre.lureau@redhat.com> References: <20180917131457.29055-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.24 X-loop: libvir-list@redhat.com Cc: phrdina@redhat.com, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , mprivozn@redhat.com Subject: [libvirt] [PATCH v2 1/3] qemu: add memory-backend-memfd capability check X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.24 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.48]); Mon, 17 Sep 2018 13:15:40 +0000 (UTC) X-ZohoMail: RDMRC_0 RSF_0 Z_629925259 SPT_0 From: Marc-Andr=C3=A9 Lureau Check availability of "-object memory-backend-memfd". Reviewed-by: John Ferlan Signed-off-by: Marc-Andr=C3=A9 Lureau Signed-off-by: John Ferlan --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml | 1 + 10 files changed, 11 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index e04a3d775f..d866fbc183 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -508,6 +508,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, /* 315 */ "vfio-pci.display", "blockdev", + "memory-backend-memfd", ); =20 =20 @@ -1147,6 +1148,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[= ] =3D { { "vhost-vsock-device", QEMU_CAPS_DEVICE_VHOST_VSOCK }, { "mch", QEMU_CAPS_DEVICE_MCH }, { "sev-guest", QEMU_CAPS_SEV_GUEST }, + { "memory-backend-memfd", QEMU_CAPS_OBJECT_MEMORY_MEMFD }, }; =20 static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVirtioBalloon[]= =3D { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index a0134493aa..b56d92c2f9 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -492,6 +492,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ /* 315 */ 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 */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml b/tests/qem= ucapabilitiesdata/caps_2.12.0.aarch64.xml index 71c3d0f53f..e4de7da349 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml @@ -163,6 +163,7 @@ + 2011090 0 344910 diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemuc= apabilitiesdata/caps_2.12.0.ppc64.xml index d638663c75..ffe451b332 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml @@ -161,6 +161,7 @@ + 2011090 0 425694 diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml b/tests/qemuc= apabilitiesdata/caps_2.12.0.s390x.xml index f1a154c4c4..7fa50bdfaa 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml @@ -129,6 +129,7 @@ + 2012000 0 374287 diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml b/tests/qemu= capabilitiesdata/caps_2.12.0.x86_64.xml index 2bded9fc38..b3f6bdc302 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml @@ -204,6 +204,7 @@ + 2011090 0 413556 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_3.0.0.ppc64.xml index ce70bbad61..f3df19fc33 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml @@ -161,6 +161,7 @@ + 2012050 0 444131 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml b/tests/qemu= capabilitiesdata/caps_3.0.0.riscv32.xml index f6e74ee7c6..bf04826ad0 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml @@ -101,6 +101,7 @@ + 3000000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml b/tests/qemu= capabilitiesdata/caps_3.0.0.riscv64.xml index b6b1bc12db..b5f8f94052 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml @@ -101,6 +101,7 @@ + 3000000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_3.0.0.x86_64.xml index 1d910a9679..2f22fd10b6 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml @@ -206,6 +206,7 @@ + 3000000 0 425157 --=20 2.19.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 07:12:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1537190136204134.40897299008964; Mon, 17 Sep 2018 06:15:36 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9CBD63083395; Mon, 17 Sep 2018 13:15:28 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5972318AA0; Mon, 17 Sep 2018 13:15:28 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id DE67918005DF; Mon, 17 Sep 2018 13:15:25 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w8HDFOZd002859 for ; Mon, 17 Sep 2018 09:15:24 -0400 Received: by smtp.corp.redhat.com (Postfix) id A6A5F78C14; Mon, 17 Sep 2018 13:15:24 +0000 (UTC) Received: from localhost (ovpn-112-59.ams2.redhat.com [10.36.112.59]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6E83278C13; Mon, 17 Sep 2018 13:15:16 +0000 (UTC) From: marcandre.lureau@redhat.com To: libvir-list@redhat.com Date: Mon, 17 Sep 2018 17:14:56 +0400 Message-Id: <20180917131457.29055-3-marcandre.lureau@redhat.com> In-Reply-To: <20180917131457.29055-1-marcandre.lureau@redhat.com> References: <20180917131457.29055-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com Cc: phrdina@redhat.com, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , mprivozn@redhat.com Subject: [libvirt] [PATCH v2 2/3] qemu: check memory-backend-memfd.hugetlb capability X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.44]); Mon, 17 Sep 2018 13:15:34 +0000 (UTC) X-ZohoMail: RDMRC_0 RSF_0 Z_629925259 SPT_0 From: Marc-Andr=C3=A9 Lureau 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". Reviewed-by: John Ferlan Signed-off-by: Marc-Andr=C3=A9 Lureau Signed-off-by: John Ferlan --- 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 d866fbc183..e333e90171 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", ); =20 =20 @@ -1411,6 +1412,10 @@ static struct virQEMUCapsStringFlags virQEMUCapsObje= ctPropsMemoryBackendFile[] =3D { "discard-data", QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD }, }; =20 +static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsMemoryBackendMe= mfd[] =3D { + { "hugetlb", QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB }, +}; + static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsSPAPRMachine[] = =3D { { "cap-hpt-max-page-size", QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_= SIZE }, { "cap-htm", QEMU_CAPS_MACHINE_PSERIES_CAP_HTM }, @@ -1420,6 +1425,9 @@ static virQEMUCapsObjectTypeProps virQEMUCapsObjectPr= ops[] =3D { { "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 b56d92c2f9..1f0f49979c 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 */ =20 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 4208a66156..2cd6705d78 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.replies +++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.replies @@ -5403,13 +5403,71 @@ { "execute": "qom-list-properties", "arguments": { - "typename": "spapr-machine" + "typename": "memory-backend-memfd" }, "id": "libvirt-31" } =20 { - "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" @@ -5418,7 +5476,7 @@ =20 { "execute": "query-machines", - "id": "libvirt-32" + "id": "libvirt-33" } =20 { @@ -5715,12 +5773,12 @@ "cpu-max": 1 } ], - "id": "libvirt-32" + "id": "libvirt-33" } =20 { "execute": "query-cpu-definitions", - "id": "libvirt-33" + "id": "libvirt-34" } =20 { @@ -5896,35 +5954,35 @@ "static": false } ], - "id": "libvirt-33" + "id": "libvirt-34" } =20 { "execute": "query-tpm-models", - "id": "libvirt-34" + "id": "libvirt-35" } =20 { "return": [ ], - "id": "libvirt-34" + "id": "libvirt-35" } =20 { "execute": "query-tpm-types", - "id": "libvirt-35" + "id": "libvirt-36" } =20 { "return": [ "emulator" ], - "id": "libvirt-35" + "id": "libvirt-36" } =20 { "execute": "query-command-line-options", - "id": "libvirt-36" + "id": "libvirt-37" } =20 { @@ -7085,12 +7143,12 @@ "option": "drive" } ], - "id": "libvirt-36" + "id": "libvirt-37" } =20 { "execute": "query-migrate-capabilities", - "id": "libvirt-37" + "id": "libvirt-38" } =20 { @@ -7152,12 +7210,12 @@ "capability": "dirty-bitmaps" } ], - "id": "libvirt-37" + "id": "libvirt-38" } =20 { "execute": "query-qmp-schema", - "id": "libvirt-38" + "id": "libvirt-39" } =20 { @@ -18525,12 +18583,12 @@ "meta-type": "object" } ], - "id": "libvirt-38" + "id": "libvirt-39" } =20 { "execute": "query-gic-capabilities", - "id": "libvirt-39" + "id": "libvirt-40" } =20 { @@ -18546,7 +18604,7 @@ "kernel": false } ], - "id": "libvirt-39" + "id": "libvirt-40" } =20 { diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml b/tests/qem= ucapabilitiesdata/caps_2.12.0.aarch64.xml index e4de7da349..1bf025007d 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml @@ -164,9 +164,10 @@ + 2011090 0 - 344910 + 345725 v2.12.0-rc0 aarch64 diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.replies b/tests/q= emucapabilitiesdata/caps_2.12.0.ppc64.replies index bd28546275..d8aef1e9d1 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.replies +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.replies @@ -5458,11 +5458,69 @@ { "execute": "qom-list-properties", "arguments": { - "typename": "spapr-machine" + "typename": "memory-backend-memfd" }, "id": "libvirt-32" } =20 +{ + "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-32" +} + +{ + "execute": "qom-list-properties", + "arguments": { + "typename": "spapr-machine" + }, + "id": "libvirt-33" +} + { "return": [ { @@ -5621,12 +5679,12 @@ "type": "bool" } ], - "id": "libvirt-32" + "id": "libvirt-33" } =20 { "execute": "query-machines", - "id": "libvirt-33" + "id": "libvirt-34" } =20 { @@ -5764,12 +5822,12 @@ "cpu-max": 1 } ], - "id": "libvirt-33" + "id": "libvirt-34" } =20 { "execute": "query-cpu-definitions", - "id": "libvirt-34" + "id": "libvirt-35" } =20 { @@ -7965,35 +8023,35 @@ "static": false } ], - "id": "libvirt-34" + "id": "libvirt-35" } =20 { "execute": "query-tpm-models", - "id": "libvirt-35" + "id": "libvirt-36" } =20 { "return": [ ], - "id": "libvirt-35" + "id": "libvirt-36" } =20 { "execute": "query-tpm-types", - "id": "libvirt-36" + "id": "libvirt-37" } =20 { "return": [ "emulator" ], - "id": "libvirt-36" + "id": "libvirt-37" } =20 { "execute": "query-command-line-options", - "id": "libvirt-37" + "id": "libvirt-38" } =20 { @@ -9149,12 +9207,12 @@ "option": "drive" } ], - "id": "libvirt-37" + "id": "libvirt-38" } =20 { "execute": "query-migrate-capabilities", - "id": "libvirt-38" + "id": "libvirt-39" } =20 { @@ -9216,12 +9274,12 @@ "capability": "dirty-bitmaps" } ], - "id": "libvirt-38" + "id": "libvirt-39" } =20 { "execute": "query-qmp-schema", - "id": "libvirt-39" + "id": "libvirt-40" } =20 { @@ -20589,7 +20647,7 @@ "meta-type": "object" } ], - "id": "libvirt-39" + "id": "libvirt-40" } =20 { diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemuc= apabilitiesdata/caps_2.12.0.ppc64.xml index ffe451b332..d722a5d6e8 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml @@ -162,9 +162,10 @@ + 2011090 0 - 425694 + 426509 v2.12.0-rc0 ppc64 diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies b/tests/q= emucapabilitiesdata/caps_2.12.0.s390x.replies index f98afbceae..b5a14b5916 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies @@ -3818,13 +3818,71 @@ { "execute": "qom-list-properties", "arguments": { - "typename": "spapr-machine" + "typename": "memory-backend-memfd" }, "id": "libvirt-31" } =20 { - "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" @@ -3833,7 +3891,7 @@ =20 { "execute": "query-machines", - "id": "libvirt-32" + "id": "libvirt-33" } =20 { @@ -3891,12 +3949,12 @@ "alias": "s390-ccw-virtio" } ], - "id": "libvirt-32" + "id": "libvirt-33" } =20 { "execute": "query-cpu-definitions", - "id": "libvirt-33" + "id": "libvirt-34" } =20 { @@ -4431,35 +4489,35 @@ "migration-safe": true } ], - "id": "libvirt-33" + "id": "libvirt-34" } =20 { "execute": "query-tpm-models", - "id": "libvirt-34" + "id": "libvirt-35" } =20 { "return": [ ], - "id": "libvirt-34" + "id": "libvirt-35" } =20 { "execute": "query-tpm-types", - "id": "libvirt-35" + "id": "libvirt-36" } =20 { "return": [ "emulator" ], - "id": "libvirt-35" + "id": "libvirt-36" } =20 { "execute": "query-command-line-options", - "id": "libvirt-36" + "id": "libvirt-37" } =20 { @@ -5584,12 +5642,12 @@ "option": "drive" } ], - "id": "libvirt-36" + "id": "libvirt-37" } =20 { "execute": "query-migrate-capabilities", - "id": "libvirt-37" + "id": "libvirt-38" } =20 { @@ -5651,12 +5709,12 @@ "capability": "dirty-bitmaps" } ], - "id": "libvirt-37" + "id": "libvirt-38" } =20 { "execute": "query-qmp-schema", - "id": "libvirt-38" + "id": "libvirt-39" } =20 { @@ -17024,7 +17082,7 @@ "meta-type": "object" } ], - "id": "libvirt-38" + "id": "libvirt-39" } =20 { @@ -17035,7 +17093,7 @@ "name": "host" } }, - "id": "libvirt-39" + "id": "libvirt-40" } =20 { @@ -17073,7 +17131,7 @@ } } }, - "id": "libvirt-39" + "id": "libvirt-40" } =20 { @@ -17087,11 +17145,11 @@ } } }, - "id": "libvirt-40" + "id": "libvirt-41" } =20 { - "id": "libvirt-40", + "id": "libvirt-41", "error": { "class": "GenericError", "desc": "Property '.migratable' not found" diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml b/tests/qemuc= apabilitiesdata/caps_2.12.0.s390x.xml index 7fa50bdfaa..2082b1f6d3 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml @@ -130,9 +130,10 @@ + 2012000 0 - 374287 + 375102 s390x diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies b/tests/= qemucapabilitiesdata/caps_2.12.0.x86_64.replies index e0b6d2f937..675b85b43d 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies @@ -4816,13 +4816,71 @@ { "execute": "qom-list-properties", "arguments": { - "typename": "spapr-machine" + "typename": "memory-backend-memfd" }, "id": "libvirt-36" } =20 { - "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" +} + +{ + "id": "libvirt-37", "error": { "class": "DeviceNotFound", "desc": "Class 'spapr-machine' not found" @@ -4831,7 +4889,7 @@ =20 { "execute": "query-machines", - "id": "libvirt-37" + "id": "libvirt-38" } =20 { @@ -5030,12 +5088,12 @@ "cpu-max": 255 } ], - "id": "libvirt-37" + "id": "libvirt-38" } =20 { "execute": "query-cpu-definitions", - "id": "libvirt-38" + "id": "libvirt-39" } =20 { @@ -5549,12 +5607,12 @@ "migration-safe": true } ], - "id": "libvirt-38" + "id": "libvirt-39" } =20 { "execute": "query-tpm-models", - "id": "libvirt-39" + "id": "libvirt-40" } =20 { @@ -5562,12 +5620,12 @@ "tpm-crb", "tpm-tis" ], - "id": "libvirt-39" + "id": "libvirt-40" } =20 { "execute": "query-tpm-types", - "id": "libvirt-40" + "id": "libvirt-41" } =20 { @@ -5575,12 +5633,12 @@ "passthrough", "emulator" ], - "id": "libvirt-40" + "id": "libvirt-41" } =20 { "execute": "query-command-line-options", - "id": "libvirt-41" + "id": "libvirt-42" } =20 { @@ -6867,12 +6925,12 @@ "option": "drive" } ], - "id": "libvirt-41" + "id": "libvirt-42" } =20 { "execute": "query-migrate-capabilities", - "id": "libvirt-42" + "id": "libvirt-43" } =20 { @@ -6934,12 +6992,12 @@ "capability": "dirty-bitmaps" } ], - "id": "libvirt-42" + "id": "libvirt-43" } =20 { "execute": "query-qmp-schema", - "id": "libvirt-43" + "id": "libvirt-44" } =20 { @@ -18307,7 +18365,7 @@ "meta-type": "object" } ], - "id": "libvirt-43" + "id": "libvirt-44" } =20 { @@ -18318,7 +18376,7 @@ "name": "host" } }, - "id": "libvirt-44" + "id": "libvirt-45" } =20 { @@ -18508,7 +18566,7 @@ } } }, - "id": "libvirt-44" + "id": "libvirt-45" } =20 { @@ -18700,7 +18758,7 @@ } } }, - "id": "libvirt-45" + "id": "libvirt-46" } =20 { @@ -18955,7 +19013,7 @@ } } }, - "id": "libvirt-45" + "id": "libvirt-46" } =20 { @@ -18969,7 +19027,7 @@ } } }, - "id": "libvirt-46" + "id": "libvirt-47" } =20 { @@ -19159,7 +19217,7 @@ } } }, - "id": "libvirt-46" + "id": "libvirt-47" } =20 { @@ -19351,7 +19409,7 @@ } } }, - "id": "libvirt-47" + "id": "libvirt-48" } =20 { @@ -19606,12 +19664,12 @@ } } }, - "id": "libvirt-47" + "id": "libvirt-48" } =20 { "execute": "query-sev-capabilities", - "id": "libvirt-48" + "id": "libvirt-49" } =20 { @@ -19621,7 +19679,7 @@ "cert-chain": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA= ", "pdh": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAA= OAAA" }, - "id": "libvirt-48" + "id": "libvirt-49" } =20 { diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml b/tests/qemu= capabilitiesdata/caps_2.12.0.x86_64.xml index b3f6bdc302..f2a63d7a88 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml @@ -205,9 +205,10 @@ + 2011090 0 - 413556 + 414371 v2.12.0-rc0 x86_64 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.replies b/tests/qe= mucapabilitiesdata/caps_3.0.0.ppc64.replies index eb57c77a90..aff01371a3 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.replies +++ b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.replies @@ -5541,11 +5541,69 @@ { "execute": "qom-list-properties", "arguments": { - "typename": "spapr-machine" + "typename": "memory-backend-memfd" }, "id": "libvirt-32" } =20 +{ + "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-32" +} + +{ + "execute": "qom-list-properties", + "arguments": { + "typename": "spapr-machine" + }, + "id": "libvirt-33" +} + { "return": [ { @@ -5714,12 +5772,12 @@ "type": "bool" } ], - "id": "libvirt-32" + "id": "libvirt-33" } =20 { "execute": "query-machines", - "id": "libvirt-33" + "id": "libvirt-34" } =20 { @@ -5862,12 +5920,12 @@ "cpu-max": 1 } ], - "id": "libvirt-33" + "id": "libvirt-34" } =20 { "execute": "query-cpu-definitions", - "id": "libvirt-34" + "id": "libvirt-35" } =20 { @@ -8063,35 +8121,35 @@ "static": false } ], - "id": "libvirt-34" + "id": "libvirt-35" } =20 { "execute": "query-tpm-models", - "id": "libvirt-35" + "id": "libvirt-36" } =20 { "return": [ ], - "id": "libvirt-35" + "id": "libvirt-36" } =20 { "execute": "query-tpm-types", - "id": "libvirt-36" + "id": "libvirt-37" } =20 { "return": [ "emulator" ], - "id": "libvirt-36" + "id": "libvirt-37" } =20 { "execute": "query-command-line-options", - "id": "libvirt-37" + "id": "libvirt-38" } =20 { @@ -9221,12 +9279,12 @@ "option": "drive" } ], - "id": "libvirt-37" + "id": "libvirt-38" } =20 { "execute": "query-migrate-capabilities", - "id": "libvirt-38" + "id": "libvirt-39" } =20 { @@ -9296,12 +9354,12 @@ "capability": "late-block-activate" } ], - "id": "libvirt-38" + "id": "libvirt-39" } =20 { "execute": "query-qmp-schema", - "id": "libvirt-39" + "id": "libvirt-40" } =20 { @@ -21460,7 +21518,7 @@ "meta-type": "object" } ], - "id": "libvirt-39" + "id": "libvirt-40" } =20 { diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_3.0.0.ppc64.xml index f3df19fc33..c901c671a5 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml @@ -162,9 +162,10 @@ + 2012050 0 - 444131 + 444946 v2.12.0-1689-g518d23a ppc64 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.replies b/tests/= qemucapabilitiesdata/caps_3.0.0.riscv32.replies index 3e8d136a32..663b4a49c0 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.replies +++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.replies @@ -1734,13 +1734,71 @@ { "execute": "qom-list-properties", "arguments": { - "typename": "spapr-machine" + "typename": "memory-backend-memfd" }, "id": "libvirt-27" } =20 { - "id": "libvirt-27", + "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-27" +} + +{ + "execute": "qom-list-properties", + "arguments": { + "typename": "spapr-machine" + }, + "id": "libvirt-28" +} + +{ + "id": "libvirt-28", "error": { "class": "DeviceNotFound", "desc": "Class 'spapr-machine' not found" @@ -1749,7 +1807,7 @@ =20 { "execute": "query-machines", - "id": "libvirt-28" + "id": "libvirt-29" } =20 { @@ -1786,23 +1844,23 @@ "cpu-max": 1 } ], - "id": "libvirt-28" + "id": "libvirt-29" } =20 { "execute": "query-tpm-models", - "id": "libvirt-29" + "id": "libvirt-30" } =20 { "return": [ ], - "id": "libvirt-29" + "id": "libvirt-30" } =20 { "execute": "query-tpm-types", - "id": "libvirt-30" + "id": "libvirt-31" } =20 { @@ -1810,12 +1868,12 @@ "passthrough", "emulator" ], - "id": "libvirt-30" + "id": "libvirt-31" } =20 { "execute": "query-command-line-options", - "id": "libvirt-31" + "id": "libvirt-32" } =20 { @@ -2940,12 +2998,12 @@ "option": "drive" } ], - "id": "libvirt-31" + "id": "libvirt-32" } =20 { "execute": "query-migrate-capabilities", - "id": "libvirt-32" + "id": "libvirt-33" } =20 { @@ -3015,12 +3073,12 @@ "capability": "late-block-activate" } ], - "id": "libvirt-32" + "id": "libvirt-33" } =20 { "execute": "query-qmp-schema", - "id": "libvirt-33" + "id": "libvirt-34" } =20 { @@ -14695,5 +14753,5 @@ "meta-type": "object" } ], - "id": "libvirt-33" + "id": "libvirt-34" } diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml b/tests/qemu= capabilitiesdata/caps_3.0.0.riscv32.xml index bf04826ad0..2e1530e0eb 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml @@ -102,6 +102,7 @@ + 3000000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.replies b/tests/= qemucapabilitiesdata/caps_3.0.0.riscv64.replies index 3631193566..cc66c232ab 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.replies +++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.replies @@ -1734,13 +1734,71 @@ { "execute": "qom-list-properties", "arguments": { - "typename": "spapr-machine" + "typename": "memory-backend-memfd" }, "id": "libvirt-27" } =20 { - "id": "libvirt-27", + "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-27" +} + +{ + "execute": "qom-list-properties", + "arguments": { + "typename": "spapr-machine" + }, + "id": "libvirt-28" +} + +{ + "id": "libvirt-28", "error": { "class": "DeviceNotFound", "desc": "Class 'spapr-machine' not found" @@ -1749,7 +1807,7 @@ =20 { "execute": "query-machines", - "id": "libvirt-28" + "id": "libvirt-29" } =20 { @@ -1786,23 +1844,23 @@ "cpu-max": 1 } ], - "id": "libvirt-28" + "id": "libvirt-29" } =20 { "execute": "query-tpm-models", - "id": "libvirt-29" + "id": "libvirt-30" } =20 { "return": [ ], - "id": "libvirt-29" + "id": "libvirt-30" } =20 { "execute": "query-tpm-types", - "id": "libvirt-30" + "id": "libvirt-31" } =20 { @@ -1810,12 +1868,12 @@ "passthrough", "emulator" ], - "id": "libvirt-30" + "id": "libvirt-31" } =20 { "execute": "query-command-line-options", - "id": "libvirt-31" + "id": "libvirt-32" } =20 { @@ -2940,12 +2998,12 @@ "option": "drive" } ], - "id": "libvirt-31" + "id": "libvirt-32" } =20 { "execute": "query-migrate-capabilities", - "id": "libvirt-32" + "id": "libvirt-33" } =20 { @@ -3015,12 +3073,12 @@ "capability": "late-block-activate" } ], - "id": "libvirt-32" + "id": "libvirt-33" } =20 { "execute": "query-qmp-schema", - "id": "libvirt-33" + "id": "libvirt-34" } =20 { @@ -14695,5 +14753,5 @@ "meta-type": "object" } ], - "id": "libvirt-33" + "id": "libvirt-34" } diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml b/tests/qemu= capabilitiesdata/caps_3.0.0.riscv64.xml index b5f8f94052..4f54dc0217 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml @@ -102,6 +102,7 @@ + 3000000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies b/tests/q= emucapabilitiesdata/caps_3.0.0.x86_64.replies index 17edb990e1..f5bbe5c650 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies +++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies @@ -4928,13 +4928,71 @@ { "execute": "qom-list-properties", "arguments": { - "typename": "spapr-machine" + "typename": "memory-backend-memfd" }, "id": "libvirt-36" } =20 { - "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" +} + +{ + "id": "libvirt-37", "error": { "class": "DeviceNotFound", "desc": "Class 'spapr-machine' not found" @@ -4943,7 +5001,7 @@ =20 { "execute": "query-machines", - "id": "libvirt-37" + "id": "libvirt-38" } =20 { @@ -5152,12 +5210,12 @@ "cpu-max": 255 } ], - "id": "libvirt-37" + "id": "libvirt-38" } =20 { "execute": "query-cpu-definitions", - "id": "libvirt-38" + "id": "libvirt-39" } =20 { @@ -5594,12 +5652,12 @@ "migration-safe": true } ], - "id": "libvirt-38" + "id": "libvirt-39" } =20 { "execute": "query-tpm-models", - "id": "libvirt-39" + "id": "libvirt-40" } =20 { @@ -5607,12 +5665,12 @@ "tpm-crb", "tpm-tis" ], - "id": "libvirt-39" + "id": "libvirt-40" } =20 { "execute": "query-tpm-types", - "id": "libvirt-40" + "id": "libvirt-41" } =20 { @@ -5620,12 +5678,12 @@ "passthrough", "emulator" ], - "id": "libvirt-40" + "id": "libvirt-41" } =20 { "execute": "query-command-line-options", - "id": "libvirt-41" + "id": "libvirt-42" } =20 { @@ -6924,12 +6982,12 @@ "option": "drive" } ], - "id": "libvirt-41" + "id": "libvirt-42" } =20 { "execute": "query-migrate-capabilities", - "id": "libvirt-42" + "id": "libvirt-43" } =20 { @@ -6999,12 +7057,12 @@ "capability": "late-block-activate" } ], - "id": "libvirt-42" + "id": "libvirt-43" } =20 { "execute": "query-qmp-schema", - "id": "libvirt-43" + "id": "libvirt-44" } =20 { @@ -18884,7 +18942,7 @@ "meta-type": "object" } ], - "id": "libvirt-43" + "id": "libvirt-44" } =20 { @@ -18895,7 +18953,7 @@ "name": "host" } }, - "id": "libvirt-44" + "id": "libvirt-45" } =20 { @@ -19088,7 +19146,7 @@ } } }, - "id": "libvirt-44" + "id": "libvirt-45" } =20 { @@ -19283,7 +19341,7 @@ } } }, - "id": "libvirt-45" + "id": "libvirt-46" } =20 { @@ -19546,7 +19604,7 @@ } } }, - "id": "libvirt-45" + "id": "libvirt-46" } =20 { @@ -19560,7 +19618,7 @@ } } }, - "id": "libvirt-46" + "id": "libvirt-47" } =20 { @@ -19753,7 +19811,7 @@ } } }, - "id": "libvirt-46" + "id": "libvirt-47" } =20 { @@ -19948,7 +20006,7 @@ } } }, - "id": "libvirt-47" + "id": "libvirt-48" } =20 { @@ -20211,16 +20269,16 @@ } } }, - "id": "libvirt-47" + "id": "libvirt-48" } =20 { "execute": "query-sev-capabilities", - "id": "libvirt-48" + "id": "libvirt-49" } =20 { - "id": "libvirt-48", + "id": "libvirt-49", "error": { "class": "GenericError", "desc": "SEV feature is not available" diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_3.0.0.x86_64.xml index 2f22fd10b6..67e490dcdf 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml @@ -207,9 +207,10 @@ + 3000000 0 - 425157 + 425972 v3.0.0 x86_64 --=20 2.19.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 07:12:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1537190141378793.1236388081669; Mon, 17 Sep 2018 06:15:41 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1B0A23082DD4; Mon, 17 Sep 2018 13:15:34 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DB40079433; Mon, 17 Sep 2018 13:15:33 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 80BE24A463; Mon, 17 Sep 2018 13:15:32 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w8HDFVuI002873 for ; Mon, 17 Sep 2018 09:15:31 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1900D78C09; Mon, 17 Sep 2018 13:15:31 +0000 (UTC) Received: from localhost (ovpn-112-59.ams2.redhat.com [10.36.112.59]) by smtp.corp.redhat.com (Postfix) with ESMTP id A1D2B784D0; Mon, 17 Sep 2018 13:15:28 +0000 (UTC) From: marcandre.lureau@redhat.com To: libvir-list@redhat.com Date: Mon, 17 Sep 2018 17:14:57 +0400 Message-Id: <20180917131457.29055-4-marcandre.lureau@redhat.com> In-Reply-To: <20180917131457.29055-1-marcandre.lureau@redhat.com> References: <20180917131457.29055-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com Cc: phrdina@redhat.com, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , mprivozn@redhat.com Subject: [libvirt] [PATCH v2 3/3] qemu: add memfd source type X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Mon, 17 Sep 2018 13:15:40 +0000 (UTC) X-ZohoMail: RDMRC_0 RSF_0 Z_629925259 SPT_0 From: Marc-Andr=C3=A9 Lureau Add a new memoryBacking source type "memfd", supported by QEMU (when the apability is available). A memfd is a specialized anonymous memory kind. As such, an anonymous source type could be automatically using a memfd. However, there are some complications when migrating from different memory backends in qemu (mainly due to the internal object naming at this point, but there could be more). For now, it is simpler and safer to simply introduce a new source type "memfd". Eventually, the "anonymous" type could learn to use memfd transparently in a seperate change. The main benefits are that it doesn't need to create filesystem files, and it also enforces sealing, providing a bit more safety. Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: John Ferlan --- docs/formatdomain.html.in | 9 +-- docs/schemas/domaincommon.rng | 1 + src/conf/domain_conf.c | 3 +- src/conf/domain_conf.h | 1 + src/qemu/qemu_command.c | 69 +++++++++++++------ src/qemu/qemu_domain.c | 12 +++- .../memfd-memory-numa.x86_64-latest.args | 34 +++++++++ tests/qemuxml2argvdata/memfd-memory-numa.xml | 36 ++++++++++ tests/qemuxml2argvtest.c | 2 + 9 files changed, 140 insertions(+), 27 deletions(-) create mode 100644 tests/qemuxml2argvdata/memfd-memory-numa.x86_64-latest.= args create mode 100644 tests/qemuxml2argvdata/memfd-memory-numa.xml diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 1f12ab5b42..eeee1f6d40 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1099,7 +1099,7 @@ </hugepages> <nosharepages/> <locked/> - <source type=3D"file|anonymous"/> + <source type=3D"file|anonymous|memfd"/> <access mode=3D"shared|private"/> <allocation mode=3D"immediate|ondemand"/> <discard/> @@ -1150,9 +1150,10 @@ suitable for the specific environment at the same time to mitigate the risks described above. Since 1.0.6
source
-
Using the type attribute, it's possible to provide - "file" to utilize file memorybacking or keep the default - "anonymous".
+
Using the type attribute, it's possible to + provide "file" to utilize file memorybacking or keep the + default "anonymous". Since 4.8.0, + you may choose "memfd" backing. (QEMU/KVM only)
access
Using the mode attribute, specify if the memory is to be "shared" or "private". This can be overridden per numa node= by diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 099a949cf8..4b431b4188 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -655,6 +655,7 @@ file anonymous + memfd diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 1ee43950ae..648015b5b5 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -894,7 +894,8 @@ VIR_ENUM_IMPL(virDomainDiskMirrorState, VIR_DOMAIN_DISK= _MIRROR_STATE_LAST, VIR_ENUM_IMPL(virDomainMemorySource, VIR_DOMAIN_MEMORY_SOURCE_LAST, "none", "file", - "anonymous") + "anonymous", + "memfd") =20 VIR_ENUM_IMPL(virDomainMemoryAllocation, VIR_DOMAIN_MEMORY_ALLOCATION_LAST, "none", diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index e30a4b2fe7..00dacef3af 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -607,6 +607,7 @@ typedef enum { VIR_DOMAIN_MEMORY_SOURCE_NONE =3D 0, /* No memory source defined */ VIR_DOMAIN_MEMORY_SOURCE_FILE, /* Memory source is set as file */ VIR_DOMAIN_MEMORY_SOURCE_ANONYMOUS, /* Memory source is set as anonymo= us */ + VIR_DOMAIN_MEMORY_SOURCE_MEMFD, /* Memory source is set as memfd */ =20 VIR_DOMAIN_MEMORY_SOURCE_LAST, } virDomainMemorySource; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 0a353f87ba..b7481b622d 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -3114,6 +3114,26 @@ qemuBuildControllerDevCommandLine(virCommandPtr cmd, } =20 =20 +static int +qemuBuildMemoryBackendPropsShare(virJSONValuePtr props, + virDomainMemoryAccess memAccess) +{ + switch (memAccess) { + case VIR_DOMAIN_MEMORY_ACCESS_SHARED: + return virJSONValueObjectAdd(props, "b:share", true, NULL); + + case VIR_DOMAIN_MEMORY_ACCESS_PRIVATE: + return virJSONValueObjectAdd(props, "b:share", false, NULL); + + case VIR_DOMAIN_MEMORY_ACCESS_DEFAULT: + case VIR_DOMAIN_MEMORY_ACCESS_LAST: + break; + } + + return 0; +} + + /** * qemuBuildMemoryBackendProps: * @backendProps: [out] constructed object @@ -3133,7 +3153,7 @@ qemuBuildControllerDevCommandLine(virCommandPtr cmd, * configuration value of 1 is returned. This behaviour can be suppressed = by * setting @force to true in which case 0 would be returned. * - * Then, if one of the two memory-backend-* should be used, the @qemuCaps = is + * Then, if one of the three memory-backend-* should be used, the @qemuCap= s is * consulted to check if qemu does support it. * * Returns: 0 on success, @@ -3259,7 +3279,19 @@ qemuBuildMemoryBackendProps(virJSONValuePtr *backend= Props, if (!(props =3D virJSONValueNewObject())) return -1; =20 - if (useHugepage || mem->nvdimmPath || memAccess || + if (def->mem.source =3D=3D VIR_DOMAIN_MEMORY_SOURCE_MEMFD) { + backendType =3D "memory-backend-memfd"; + + if (useHugepage && + (virJSONValueObjectAdd(props, "b:hugetlb", useHugepage, NULL) = < 0 || + virJSONValueObjectAdd(props, "U:hugetlbsize", pagesize << 10,= NULL) < 0)) { + goto cleanup; + } + + if (qemuBuildMemoryBackendPropsShare(props, memAccess) < 0) + goto cleanup; + + } else if (useHugepage || mem->nvdimmPath || memAccess || def->mem.source =3D=3D VIR_DOMAIN_MEMORY_SOURCE_FILE) { =20 if (mem->nvdimmPath) { @@ -3297,21 +3329,8 @@ qemuBuildMemoryBackendProps(virJSONValuePtr *backend= Props, goto cleanup; } =20 - switch (memAccess) { - case VIR_DOMAIN_MEMORY_ACCESS_SHARED: - if (virJSONValueObjectAdd(props, "b:share", true, NULL) < 0) - goto cleanup; - break; - - case VIR_DOMAIN_MEMORY_ACCESS_PRIVATE: - if (virJSONValueObjectAdd(props, "b:share", false, NULL) < 0) - goto cleanup; - break; - - case VIR_DOMAIN_MEMORY_ACCESS_DEFAULT: - case VIR_DOMAIN_MEMORY_ACCESS_LAST: - break; - } + if (qemuBuildMemoryBackendPropsShare(props, memAccess) < 0) + goto cleanup; } else { backendType =3D "memory-backend-ram"; } @@ -3341,7 +3360,9 @@ qemuBuildMemoryBackendProps(virJSONValuePtr *backendP= rops, if (!needHugepage && !mem->sourceNodes && !nodeSpecified && !mem->nvdimmPath && memAccess =3D=3D VIR_DOMAIN_MEMORY_ACCESS_DEFAULT && - def->mem.source !=3D VIR_DOMAIN_MEMORY_SOURCE_FILE && !force) { + def->mem.source !=3D VIR_DOMAIN_MEMORY_SOURCE_FILE && + def->mem.source !=3D VIR_DOMAIN_MEMORY_SOURCE_MEMFD && + !force) { /* report back that using the new backend is not necessary * to achieve the desired configuration */ ret =3D 1; @@ -3359,6 +3380,12 @@ qemuBuildMemoryBackendProps(virJSONValuePtr *backend= Props, _("this qemu doesn't support the " "memory-backend-ram object")); goto cleanup; + } else if (STREQ(backendType, "memory-backend-memory") && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_MEMFD= )) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("this qemu doesn't support the " + "memory-backend-memfd object")); + goto cleanup; } =20 ret =3D 0; @@ -7567,7 +7594,8 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg, =20 if (virDomainNumatuneHasPerNodeBinding(def->numa) && !(virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_RAM) || - virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE))) { + virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE) || + virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_MEMFD))) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Per-node memory binding is not supported " "with this QEMU")); @@ -7593,7 +7621,8 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg, * need to check which approach to use */ for (i =3D 0; i < ncells; i++) { if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_RAM) || - virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE)) { + virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE) || + virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_MEMFD)) { =20 if ((rc =3D qemuBuildMemoryCellBackendStr(def, cfg, i, priv, &nodeBackends[i])) < 0) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 2fd8a2a268..4983669a34 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -3949,7 +3949,8 @@ qemuDomainDefValidateFeatures(const virDomainDef *def, =20 =20 static int -qemuDomainDefValidateMemory(const virDomainDef *def) +qemuDomainDefValidateMemory(const virDomainDef *def, + virQEMUCapsPtr qemuCaps) { const long system_page_size =3D virGetSystemPageSizeKB(); const virDomainMemtune *mem =3D &def->mem; @@ -3971,6 +3972,13 @@ qemuDomainDefValidateMemory(const virDomainDef *def) return -1; } =20 + if (mem->source =3D=3D VIR_DOMAIN_MEMORY_SOURCE_MEMFD && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("hugepages is not support with memfd memory sourc= e")); + return -1; + } + /* We can't guarantee any other mem.access * if no guest NUMA nodes are defined. */ if (mem->hugepages[0].size !=3D system_page_size && @@ -4110,7 +4118,7 @@ qemuDomainDefValidate(const virDomainDef *def, if (qemuDomainDefValidateFeatures(def, qemuCaps) < 0) goto cleanup; =20 - if (qemuDomainDefValidateMemory(def) < 0) + if (qemuDomainDefValidateMemory(def, qemuCaps) < 0) goto cleanup; =20 ret =3D 0; diff --git a/tests/qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args b/= tests/qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args new file mode 100644 index 0000000000..d0f4057e01 --- /dev/null +++ b/tests/qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args @@ -0,0 +1,34 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/home/test \ +USER=3Dtest \ +LOGNAME=3Dtest \ +QEMU_AUDIO_DRV=3Dnone \ +/usr/bin/qemu-system-x86_64 \ +-name guest=3Dinstance-00000092,debug-threads=3Don \ +-S \ +-object secret,id=3DmasterKey0,format=3Draw,\ +file=3D/tmp/lib/domain--1-instance-00000092/master-key.aes \ +-machine pc-i440fx-wily,accel=3Dkvm,usb=3Doff,dump-guest-core=3Doff \ +-m 14336 \ +-mem-prealloc \ +-realtime mlock=3Doff \ +-smp 8,sockets=3D1,cores=3D8,threads=3D1 \ +-object memory-backend-memfd,id=3Dram-node0,hugetlb=3Dyes,hugetlbsize=3D20= 97152,\ +share=3Dyes,size=3D15032385536,host-nodes=3D3,policy=3Dpreferred \ +-numa node,nodeid=3D0,cpus=3D0-7,memdev=3Dram-node0 \ +-uuid 126f2720-6f8e-45ab-a886-ec9277079a67 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server,nowait \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-no-acpi \ +-boot strict=3Don \ +-device piix3-usb-uhci,id=3Dusb,bus=3Dpci.0,addr=3D0x1.0x2 \ +-device virtio-balloon-pci,id=3Dballoon0,bus=3Dpci.0,addr=3D0x2 \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,\ +resourcecontrol=3Ddeny \ +-msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/memfd-memory-numa.xml b/tests/qemuxml2a= rgvdata/memfd-memory-numa.xml new file mode 100644 index 0000000000..8416a990fa --- /dev/null +++ b/tests/qemuxml2argvdata/memfd-memory-numa.xml @@ -0,0 +1,36 @@ + + instance-00000092 + 126f2720-6f8e-45ab-a886-ec9277079a67 + 14680064 + 14680064 + + + + + + + + + + + + 8 + + hvm + + + + + + + + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + + + diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 3d84cb346a..79938a973c 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -2945,6 +2945,8 @@ mymain(void) DO_TEST("fd-memory-no-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE, QEMU_CAPS_KVM); =20 + DO_TEST_CAPS_LATEST("memfd-memory-numa"); + DO_TEST("cpu-check-none", QEMU_CAPS_KVM); DO_TEST("cpu-check-partial", QEMU_CAPS_KVM); DO_TEST("cpu-check-full", QEMU_CAPS_KVM); --=20 2.19.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list