Devel
Threads by month
- ----- 2026 -----
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- 18 participants
- 40170 discussions
[PATCH 00/12] qemu: migration: Fix crashes when VM shutdowns itself during migration in active state
by Peter Krempa 19 Jun '24
by Peter Krempa 19 Jun '24
19 Jun '24
The daemon crashes due to unexpected cleanup happening due to bad
assumptions about locking and state. See patch 5.
Peter Krempa (12):
qemuBlockJobProcessEventConcludedBackup: Handle potentially NULL
'job->disk'
qemuDomainDiskPrivateDispose: Prevent dangling 'disk' pointer in
blockjob data
qemuDomainDeviceBackendChardevForeach: Fix typo in comment
qemuDomainObjWait: Add documentation
qemuProcessStop: Prevent crash when qemuDomainObjStopWorker() unlocks
the VM
qemuProcessStop: Move code not depending on 'vm->def->id' after reset
of the ID
qemu: process: Ensure that 'beingDestroyed' gets cleared only after VM
id is reset
qemu: domain: Introduce qemuDomainObjIsActive helper
qemu: migration: Properly check for live VM after qemuDomainObjWait()
qemu: migration: Inline 'qemuMigrationDstFinishResume()'
qemuMigrationSrcRun: Re-check whether VM is active before accessing
job data
qemu: migration: Preserve error across qemuDomainSetMaxMemLock() on
error paths
src/qemu/qemu_backup.c | 6 +--
src/qemu/qemu_backup.h | 2 +-
src/qemu/qemu_blockjob.c | 9 +++-
src/qemu/qemu_domain.c | 40 +++++++++++++-
src/qemu/qemu_domain.h | 2 +
src/qemu/qemu_migration.c | 43 +++++++---------
src/qemu/qemu_process.c | 106 ++++++++++++++++++++++----------------
7 files changed, 131 insertions(+), 77 deletions(-)
--
2.45.2
2
15
19 Jun '24
Commit 7c8e606b64c73ca56d7134cb16d01257f39c53ef attempted to fix
the specification of the ramfb property for vfio-pci devices, but it
failed when ramfb is explicitly set to 'off'. This is because only the
'vfio-pci-nohotplug' device supports the 'ramfb' property. Since we use
the base 'vfio-pci' device unless ramfb is enabled, attempting to set
the 'ramfb' parameter to 'off' this will result in an error like the
following:
error: internal error: QEMU unexpectedly closed the monitor
(vm='rhel'): 2024-06-06T04:43:22.896795Z qemu-kvm: -device
{"driver":"vfio-pci","host":"0000:b1:00.4","id":"hostdev0","display":"on
","ramfb":false,"bus":"pci.7","addr":"0x0"}: Property 'vfio-pci.ramfb'
not found.
This also more closely matches what is done for mdev devices.
Resolves: https://issues.redhat.com/browse/RHEL-28808
Signed-off-by: Jonathon Jongsma <jjongsma(a)redhat.com>
---
src/qemu/qemu_command.c | 6 ++++--
.../hostdev-pci-display-ramfb.x86_64-latest.args | 2 +-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 2d0eddc79e..1e9de6460e 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -4760,12 +4760,14 @@ qemuBuildPCIHostdevDevProps(const virDomainDef *def,
g_autofree char *host = virPCIDeviceAddressAsString(&pcisrc->addr);
const char *failover_pair_id = NULL;
const char *driver = NULL;
+ /* 'ramfb' property must be omitted unless it's to be enabled */
+ bool ramfb = pcisrc->ramfb == VIR_TRISTATE_SWITCH_ON;
/* caller has to assign proper passthrough driver name */
switch (pcisrc->driver.name) {
case VIR_DEVICE_HOSTDEV_PCI_DRIVER_NAME_VFIO:
/* ramfb support requires the nohotplug variant */
- if (pcisrc->ramfb == VIR_TRISTATE_SWITCH_ON)
+ if (ramfb)
driver = "vfio-pci-nohotplug";
else
driver = "vfio-pci";
@@ -4798,7 +4800,7 @@ qemuBuildPCIHostdevDevProps(const virDomainDef *def,
"p:bootindex", dev->info->effectiveBootIndex,
"S:failover_pair_id", failover_pair_id,
"S:display", qemuOnOffAuto(pcisrc->display),
- "T:ramfb", pcisrc->ramfb,
+ "B:ramfb", ramfb,
NULL) < 0)
return NULL;
diff --git a/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.x86_64-latest.args b/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.x86_64-latest.args
index e6e538ef1c..a681504c3d 100644
--- a/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.x86_64-latest.args
@@ -29,6 +29,6 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest2/.config \
-audiodev '{"id":"audio1","driver":"none"}' \
-vnc 127.0.0.1:0,audiodev=audio1 \
-device '{"driver":"vfio-pci-nohotplug","host":"0000:06:12.5","id":"hostdev0","display":"on","ramfb":true,"bus":"pci.0","addr":"0x2"}' \
--device '{"driver":"vfio-pci","host":"0000:06:13.6","id":"hostdev1","display":"off","ramfb":false,"bus":"pci.0","addr":"0x3"}' \
+-device '{"driver":"vfio-pci","host":"0000:06:13.6","id":"hostdev1","display":"off","bus":"pci.0","addr":"0x3"}' \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
-msg timestamp=on
--
2.45.1
2
2
Sometimes in release hook it is useful to know if the VM shutdown was graceful
or not. This is especially useful to do cleanup based on the VM shutdown failure
reason in release hook. This patch proposes to use the last argument 'extra'
to pass VM shutoff reason in the call to release hook.
Making this change for Qemu and LXC.
Signed-off-by: Swapnil Ingle <swapnil.ingle(a)nutanix.com>
---
docs/hooks.rst | 49 +++++++++++++++++++++++++++++++++++++++--
src/lxc/lxc_process.c | 2 +-
src/qemu/qemu_process.c | 2 +-
3 files changed, 49 insertions(+), 4 deletions(-)
diff --git a/docs/hooks.rst b/docs/hooks.rst
index 1dbc492bd4..cdcb161c7e 100644
--- a/docs/hooks.rst
+++ b/docs/hooks.rst
@@ -215,7 +215,30 @@ operation. There is no specific operation to indicate a "restart" is occurring.
::
- /etc/libvirt/hooks/qemu guest_name release end -
+ /etc/libvirt/hooks/qemu guest_name release end <shutoff-reason>
+
+ +-------------------+------------------------------------------------------------------+
+ | Shutoff reason | Description |
+ +===================+==================================================================+
+ | unknown | the reason is unknown |
+ +-------------------+------------------------------------------------------------------+
+ | shutdown | normal shutdown |
+ +-------------------+------------------------------------------------------------------+
+ | destroyed | forced poweroff |
+ +-------------------+------------------------------------------------------------------+
+ | crashed | domain crashed |
+ +-------------------+------------------------------------------------------------------+
+ | migrated | migrated to another host |
+ +-------------------+------------------------------------------------------------------+
+ | saved | saved to a file |
+ +-------------------+------------------------------------------------------------------+
+ | failed | domain failed to start |
+ +-------------------+------------------------------------------------------------------+
+ | from snapshot | restored from a snapshot which was taken while domain was shutoff|
+ +-------------------+------------------------------------------------------------------+
+ | daemon | daemon decides to kill domain during reconnection processing |
+ +-------------------+------------------------------------------------------------------+
+
- :since:`Since 0.9.11`, the qemu hook script is also called at the beginning
of incoming migration. It is called as:
@@ -312,7 +335,29 @@ operation. There is no specific operation to indicate a "restart" is occurring.
::
- /etc/libvirt/hooks/lxc guest_name release end -
+ /etc/libvirt/hooks/lxc guest_name release end <shutoff-reason>
+
+ +-------------------+------------------------------------------------------------------+
+ | Shutoff reason | Description |
+ +===================+==================================================================+
+ | unknown | the reason is unknown |
+ +-------------------+------------------------------------------------------------------+
+ | shutdown | normal shutdown |
+ +-------------------+------------------------------------------------------------------+
+ | destroyed | forced poweroff |
+ +-------------------+------------------------------------------------------------------+
+ | crashed | domain crashed |
+ +-------------------+------------------------------------------------------------------+
+ | migrated | migrated to another host |
+ +-------------------+------------------------------------------------------------------+
+ | saved | saved to a file |
+ +-------------------+------------------------------------------------------------------+
+ | failed | domain failed to start |
+ +-------------------+------------------------------------------------------------------+
+ | from snapshot | restored from a snapshot which was taken while domain was shutoff|
+ +-------------------+------------------------------------------------------------------+
+ | daemon | daemon decides to kill domain during reconnection processing |
+ +-------------------+------------------------------------------------------------------+
- :since:`Since 0.9.13`, the lxc hook script is also called when the libvirtd
daemon restarts and reconnects to previously running LXC processes. If the
diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
index 30ff4eb3d0..f5eb5383ec 100644
--- a/src/lxc/lxc_process.c
+++ b/src/lxc/lxc_process.c
@@ -244,7 +244,7 @@ static void virLXCProcessCleanup(virLXCDriver *driver,
/* we can't stop the operation even if the script raised an error */
virHookCall(VIR_HOOK_DRIVER_LXC, vm->def->name,
VIR_HOOK_LXC_OP_RELEASE, VIR_HOOK_SUBOP_END,
- NULL, xml, NULL);
+ virDomainShutoffReasonTypeToString(reason), xml, NULL);
}
if (flags & VIR_LXC_PROCESS_CLEANUP_REMOVE_TRANSIENT)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 2c33ac3bf7..9de01b1a0d 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -8722,7 +8722,7 @@ void qemuProcessStop(virQEMUDriver *driver,
/* we can't stop the operation even if the script raised an error */
virHookCall(VIR_HOOK_DRIVER_QEMU, vm->def->name,
VIR_HOOK_QEMU_OP_RELEASE, VIR_HOOK_SUBOP_END,
- NULL, xml, NULL);
+ virDomainShutoffReasonTypeToString(reason), xml, NULL);
}
virDomainObjRemoveTransientDef(vm);
--
2.45.2
2
1
Sometimes in release hook it is useful to know if the VM shutdown was graceful
or not. This is especially useful to do cleanup based on the VM shutdown failure
reason in release hook. This patch proposes to use the last argument 'extra'
to pass VM shutoff reason in the call to release hook.
Signed-off-by: Swapnil Ingle <swapnil.ingle(a)nutanix.com>
---
docs/hooks.rst | 24 +++++++++++++++++++++++-
src/qemu/qemu_process.c | 2 +-
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/docs/hooks.rst b/docs/hooks.rst
index 1dbc492bd4..e76208021a 100644
--- a/docs/hooks.rst
+++ b/docs/hooks.rst
@@ -312,7 +312,29 @@ operation. There is no specific operation to indicate a "restart" is occurring.
::
- /etc/libvirt/hooks/lxc guest_name release end -
+ /etc/libvirt/hooks/lxc guest_name release end <shutoff-reason>
+
+ +-------------------+------------------------------------------------------------------+
+ | Shutoff reason | Description |
+ +===================+==================================================================+
+ | unknown | the reason is unknown |
+ +-------------------+------------------------------------------------------------------+
+ | shutdown | normal shutdown |
+ +-------------------+------------------------------------------------------------------+
+ | destroyed | forced poweroff |
+ +-------------------+------------------------------------------------------------------+
+ | crashed | domain crashed |
+ +-------------------+------------------------------------------------------------------+
+ | migrated | migrated to another host |
+ +-------------------+------------------------------------------------------------------+
+ | saved | saved to a file |
+ +-------------------+------------------------------------------------------------------+
+ | failed | domain failed to start |
+ +-------------------+------------------------------------------------------------------+
+ | from snapshot | restored from a snapshot which was taken while domain was shutoff|
+ +-------------------+------------------------------------------------------------------+
+ | daemon | daemon decides to kill domain during reconnection processing |
+ +-------------------+------------------------------------------------------------------+
- :since:`Since 0.9.13`, the lxc hook script is also called when the libvirtd
daemon restarts and reconnects to previously running LXC processes. If the
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 7ef7040a85..0a03685ca7 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -8716,7 +8716,7 @@ void qemuProcessStop(virQEMUDriver *driver,
/* we can't stop the operation even if the script raised an error */
virHookCall(VIR_HOOK_DRIVER_QEMU, vm->def->name,
VIR_HOOK_QEMU_OP_RELEASE, VIR_HOOK_SUBOP_END,
- NULL, xml, NULL);
+ virDomainShutoffReasonTypeToString(reason), xml, NULL);
}
virDomainObjRemoveTransientDef(vm);
--
2.45.2
2
3
We are getting close to 10.5.0 release of libvirt. To aim for the
release on Monday 01 Jul I suggest entering the freeze on Tuesday 25
Jun and tagging RC2 on Thursday 27 Jun.
I hope this works for everyone.
Jirka
1
0
Adam Julis (2):
syms: Properly export virDomainIOMMUDefFree()
qemu: implement iommu coldplug/unplug
src/libvirt_private.syms | 1 +
src/qemu/qemu_driver.c | 20 ++++++++++++++++++--
2 files changed, 19 insertions(+), 2 deletions(-)
--
2.45.0
2
4
[PATCH v2] ci: fix CI package list and refresh with 'lcitool manifest'
by Daniel P. Berrangé 18 Jun '24
by Daniel P. Berrangé 18 Jun '24
18 Jun '24
The ci/manifest.yml file references a package 'libclang-rt-dev' that
does not exist in libvirt-ci mappings.yml. The latest refresh in
commit 0759cf3fa6ed8d12bd327c5752785c53e35c8483
Author: Michal Prívozník <mprivozn(a)redhat.com>
Date: Fri May 3 15:58:20 2024 +0200
ci: Introduce Ubuntu 24.04
was presumably done against a local change to libvirt-ci.git that
had not yet been merged, as the clang packages now appear on many
more build envs.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
ci/buildenv/almalinux-9.sh | 2 +-
ci/buildenv/debian-11-cross-aarch64.sh | 1 +
ci/buildenv/debian-11-cross-armv6l.sh | 1 +
ci/buildenv/debian-11-cross-armv7l.sh | 1 +
ci/buildenv/debian-11-cross-i686.sh | 1 +
ci/buildenv/debian-11-cross-mips64el.sh | 1 +
ci/buildenv/debian-11-cross-mipsel.sh | 1 +
ci/buildenv/debian-11-cross-ppc64le.sh | 1 +
ci/buildenv/debian-11-cross-s390x.sh | 1 +
ci/buildenv/debian-11.sh | 1 +
ci/buildenv/opensuse-leap-15.sh | 1 +
ci/buildenv/opensuse-tumbleweed.sh | 1 +
ci/buildenv/ubuntu-2204.sh | 1 +
ci/containers/almalinux-9.Dockerfile | 2 +-
ci/containers/debian-11-cross-aarch64.Dockerfile | 1 +
ci/containers/debian-11-cross-armv6l.Dockerfile | 1 +
ci/containers/debian-11-cross-armv7l.Dockerfile | 1 +
ci/containers/debian-11-cross-i686.Dockerfile | 1 +
ci/containers/debian-11-cross-mips64el.Dockerfile | 1 +
ci/containers/debian-11-cross-mipsel.Dockerfile | 1 +
ci/containers/debian-11-cross-ppc64le.Dockerfile | 1 +
ci/containers/debian-11-cross-s390x.Dockerfile | 1 +
ci/containers/debian-11.Dockerfile | 1 +
ci/containers/opensuse-leap-15.Dockerfile | 1 +
ci/containers/opensuse-tumbleweed.Dockerfile | 1 +
ci/containers/ubuntu-2204.Dockerfile | 1 +
ci/lcitool/projects/libvirt.yml | 2 +-
27 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/ci/buildenv/almalinux-9.sh b/ci/buildenv/almalinux-9.sh
index f0826e1313..5791a73d23 100644
--- a/ci/buildenv/almalinux-9.sh
+++ b/ci/buildenv/almalinux-9.sh
@@ -16,7 +16,7 @@ function install_buildenv() {
ca-certificates \
ccache \
clang \
- clang-devel \
+ compiler-rt \
cpp \
cyrus-sasl-devel \
device-mapper-devel \
diff --git a/ci/buildenv/debian-11-cross-aarch64.sh b/ci/buildenv/debian-11-cross-aarch64.sh
index 3afb09aee5..8540fb8d74 100644
--- a/ci/buildenv/debian-11-cross-aarch64.sh
+++ b/ci/buildenv/debian-11-cross-aarch64.sh
@@ -27,6 +27,7 @@ function install_buildenv() {
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/buildenv/debian-11-cross-armv6l.sh b/ci/buildenv/debian-11-cross-armv6l.sh
index ff78ec0b86..131a7019c0 100644
--- a/ci/buildenv/debian-11-cross-armv6l.sh
+++ b/ci/buildenv/debian-11-cross-armv6l.sh
@@ -27,6 +27,7 @@ function install_buildenv() {
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/buildenv/debian-11-cross-armv7l.sh b/ci/buildenv/debian-11-cross-armv7l.sh
index ff3ef03463..ba78ffcfac 100644
--- a/ci/buildenv/debian-11-cross-armv7l.sh
+++ b/ci/buildenv/debian-11-cross-armv7l.sh
@@ -27,6 +27,7 @@ function install_buildenv() {
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/buildenv/debian-11-cross-i686.sh b/ci/buildenv/debian-11-cross-i686.sh
index e68e2ffcbe..104eb20805 100644
--- a/ci/buildenv/debian-11-cross-i686.sh
+++ b/ci/buildenv/debian-11-cross-i686.sh
@@ -27,6 +27,7 @@ function install_buildenv() {
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/buildenv/debian-11-cross-mips64el.sh b/ci/buildenv/debian-11-cross-mips64el.sh
index 0653223a3d..7b1830453c 100644
--- a/ci/buildenv/debian-11-cross-mips64el.sh
+++ b/ci/buildenv/debian-11-cross-mips64el.sh
@@ -27,6 +27,7 @@ function install_buildenv() {
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/buildenv/debian-11-cross-mipsel.sh b/ci/buildenv/debian-11-cross-mipsel.sh
index cee2feff59..eef5cdbfab 100644
--- a/ci/buildenv/debian-11-cross-mipsel.sh
+++ b/ci/buildenv/debian-11-cross-mipsel.sh
@@ -27,6 +27,7 @@ function install_buildenv() {
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/buildenv/debian-11-cross-ppc64le.sh b/ci/buildenv/debian-11-cross-ppc64le.sh
index 7193d4acd0..f2c2f60623 100644
--- a/ci/buildenv/debian-11-cross-ppc64le.sh
+++ b/ci/buildenv/debian-11-cross-ppc64le.sh
@@ -27,6 +27,7 @@ function install_buildenv() {
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/buildenv/debian-11-cross-s390x.sh b/ci/buildenv/debian-11-cross-s390x.sh
index ca0fb54839..519d9c8b31 100644
--- a/ci/buildenv/debian-11-cross-s390x.sh
+++ b/ci/buildenv/debian-11-cross-s390x.sh
@@ -27,6 +27,7 @@ function install_buildenv() {
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/buildenv/debian-11.sh b/ci/buildenv/debian-11.sh
index 18350321b0..5986682af8 100644
--- a/ci/buildenv/debian-11.sh
+++ b/ci/buildenv/debian-11.sh
@@ -36,6 +36,7 @@ function install_buildenv() {
libblkid-dev \
libc6-dev \
libcap-ng-dev \
+ libclang-dev \
libcurl4-gnutls-dev \
libdevmapper-dev \
libfuse-dev \
diff --git a/ci/buildenv/opensuse-leap-15.sh b/ci/buildenv/opensuse-leap-15.sh
index bc7394839b..a59af136ca 100644
--- a/ci/buildenv/opensuse-leap-15.sh
+++ b/ci/buildenv/opensuse-leap-15.sh
@@ -14,6 +14,7 @@ function install_buildenv() {
ca-certificates \
ccache \
clang \
+ clang-devel \
codespell \
cpp \
cppi \
diff --git a/ci/buildenv/opensuse-tumbleweed.sh b/ci/buildenv/opensuse-tumbleweed.sh
index 88ccff99c6..ac566d349f 100644
--- a/ci/buildenv/opensuse-tumbleweed.sh
+++ b/ci/buildenv/opensuse-tumbleweed.sh
@@ -14,6 +14,7 @@ function install_buildenv() {
ca-certificates \
ccache \
clang \
+ clang-devel \
codespell \
cpp \
cppi \
diff --git a/ci/buildenv/ubuntu-2204.sh b/ci/buildenv/ubuntu-2204.sh
index 6bd67ba777..c71a0b5f47 100644
--- a/ci/buildenv/ubuntu-2204.sh
+++ b/ci/buildenv/ubuntu-2204.sh
@@ -36,6 +36,7 @@ function install_buildenv() {
libblkid-dev \
libc6-dev \
libcap-ng-dev \
+ libclang-dev \
libcurl4-gnutls-dev \
libdevmapper-dev \
libfuse-dev \
diff --git a/ci/containers/almalinux-9.Dockerfile b/ci/containers/almalinux-9.Dockerfile
index 68608b12a9..27ac990b22 100644
--- a/ci/containers/almalinux-9.Dockerfile
+++ b/ci/containers/almalinux-9.Dockerfile
@@ -17,7 +17,7 @@ RUN dnf update -y && \
ca-certificates \
ccache \
clang \
- clang-devel \
+ compiler-rt \
cpp \
cyrus-sasl-devel \
device-mapper-devel \
diff --git a/ci/containers/debian-11-cross-aarch64.Dockerfile b/ci/containers/debian-11-cross-aarch64.Dockerfile
index 0f971ff9cb..1cb573821f 100644
--- a/ci/containers/debian-11-cross-aarch64.Dockerfile
+++ b/ci/containers/debian-11-cross-aarch64.Dockerfile
@@ -29,6 +29,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/containers/debian-11-cross-armv6l.Dockerfile b/ci/containers/debian-11-cross-armv6l.Dockerfile
index cfed7a7fc9..6989546ebf 100644
--- a/ci/containers/debian-11-cross-armv6l.Dockerfile
+++ b/ci/containers/debian-11-cross-armv6l.Dockerfile
@@ -29,6 +29,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/containers/debian-11-cross-armv7l.Dockerfile b/ci/containers/debian-11-cross-armv7l.Dockerfile
index f703be3423..fcd6a6383b 100644
--- a/ci/containers/debian-11-cross-armv7l.Dockerfile
+++ b/ci/containers/debian-11-cross-armv7l.Dockerfile
@@ -29,6 +29,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/containers/debian-11-cross-i686.Dockerfile b/ci/containers/debian-11-cross-i686.Dockerfile
index 58be733459..8d79934a52 100644
--- a/ci/containers/debian-11-cross-i686.Dockerfile
+++ b/ci/containers/debian-11-cross-i686.Dockerfile
@@ -29,6 +29,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/containers/debian-11-cross-mips64el.Dockerfile b/ci/containers/debian-11-cross-mips64el.Dockerfile
index c3198e0470..d80f741311 100644
--- a/ci/containers/debian-11-cross-mips64el.Dockerfile
+++ b/ci/containers/debian-11-cross-mips64el.Dockerfile
@@ -29,6 +29,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/containers/debian-11-cross-mipsel.Dockerfile b/ci/containers/debian-11-cross-mipsel.Dockerfile
index 21e9b0c7f9..dc674150f5 100644
--- a/ci/containers/debian-11-cross-mipsel.Dockerfile
+++ b/ci/containers/debian-11-cross-mipsel.Dockerfile
@@ -29,6 +29,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/containers/debian-11-cross-ppc64le.Dockerfile b/ci/containers/debian-11-cross-ppc64le.Dockerfile
index 29be7997f8..fc3a9ee157 100644
--- a/ci/containers/debian-11-cross-ppc64le.Dockerfile
+++ b/ci/containers/debian-11-cross-ppc64le.Dockerfile
@@ -29,6 +29,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/containers/debian-11-cross-s390x.Dockerfile b/ci/containers/debian-11-cross-s390x.Dockerfile
index fd1507b294..336694b2d3 100644
--- a/ci/containers/debian-11-cross-s390x.Dockerfile
+++ b/ci/containers/debian-11-cross-s390x.Dockerfile
@@ -29,6 +29,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
iproute2 \
iptables \
kmod \
+ libclang-dev \
libxml2-utils \
locales \
lvm2 \
diff --git a/ci/containers/debian-11.Dockerfile b/ci/containers/debian-11.Dockerfile
index c16c43d407..6f08eb7448 100644
--- a/ci/containers/debian-11.Dockerfile
+++ b/ci/containers/debian-11.Dockerfile
@@ -38,6 +38,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
libblkid-dev \
libc6-dev \
libcap-ng-dev \
+ libclang-dev \
libcurl4-gnutls-dev \
libdevmapper-dev \
libfuse-dev \
diff --git a/ci/containers/opensuse-leap-15.Dockerfile b/ci/containers/opensuse-leap-15.Dockerfile
index 6deaea0904..bf794d6929 100644
--- a/ci/containers/opensuse-leap-15.Dockerfile
+++ b/ci/containers/opensuse-leap-15.Dockerfile
@@ -15,6 +15,7 @@ RUN zypper update -y && \
ca-certificates \
ccache \
clang \
+ clang-devel \
codespell \
cpp \
cppi \
diff --git a/ci/containers/opensuse-tumbleweed.Dockerfile b/ci/containers/opensuse-tumbleweed.Dockerfile
index d4ebcd7176..2b7cdb4af5 100644
--- a/ci/containers/opensuse-tumbleweed.Dockerfile
+++ b/ci/containers/opensuse-tumbleweed.Dockerfile
@@ -15,6 +15,7 @@ RUN zypper dist-upgrade -y && \
ca-certificates \
ccache \
clang \
+ clang-devel \
codespell \
cpp \
cppi \
diff --git a/ci/containers/ubuntu-2204.Dockerfile b/ci/containers/ubuntu-2204.Dockerfile
index 8e32d992f3..5e8829bc2b 100644
--- a/ci/containers/ubuntu-2204.Dockerfile
+++ b/ci/containers/ubuntu-2204.Dockerfile
@@ -38,6 +38,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
libblkid-dev \
libc6-dev \
libcap-ng-dev \
+ libclang-dev \
libcurl4-gnutls-dev \
libdevmapper-dev \
libfuse-dev \
diff --git a/ci/lcitool/projects/libvirt.yml b/ci/lcitool/projects/libvirt.yml
index a5d2248437..5e0bd66958 100644
--- a/ci/lcitool/projects/libvirt.yml
+++ b/ci/lcitool/projects/libvirt.yml
@@ -36,7 +36,7 @@ packages:
- libblkid
- libc
- libcap-ng
- - libclang-rt-dev
+ - libclang-rt
- libcurl
- libiscsi
- libnbd
--
2.45.1
2
1
Changes from [v1]
* use TPM 2.0 more;
* reject TPM 1.2 more;
* add better comments to loongarch64 and s390x test cases.
[v1] https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/YZMV…
Andrea Bolognani (4):
tests: Add TPM coverage to default-models tests
tests: Delete some redundant test cases
qemu: Default to TPM 2.0 in most scenarios
qemu: Reject TPM 1.2 in most scenarios
src/qemu/qemu_domain.c | 13 ++--
src/qemu/qemu_validate.c | 22 +++---
...aarch64-tpm-wrong-model.aarch64-latest.err | 2 +-
.../aarch64-tpm.aarch64-latest.args | 34 ---------
.../aarch64-tpm.aarch64-latest.xml | 29 --------
tests/qemuxmlconfdata/aarch64-tpm.xml | 15 ----
...ault-models.aarch64-latest.abi-update.args | 3 +
...fault-models.aarch64-latest.abi-update.xml | 3 +
...64-virt-default-models.aarch64-latest.args | 3 +
...h64-virt-default-models.aarch64-latest.xml | 3 +
.../aarch64-virt-default-models.xml | 3 +
.../loongarch64-virt-default-models.xml | 3 +
...efault-models.ppc64-latest.abi-update.args | 3 +
...default-models.ppc64-latest.abi-update.xml | 4 ++
...4-pseries-default-models.ppc64-latest.args | 3 +
...64-pseries-default-models.ppc64-latest.xml | 4 ++
.../ppc64-pseries-default-models.xml | 3 +
...ault-models.riscv64-latest.abi-update.args | 3 +
...fault-models.riscv64-latest.abi-update.xml | 3 +
...64-virt-default-models.riscv64-latest.args | 3 +
...v64-virt-default-models.riscv64-latest.xml | 3 +
.../riscv64-virt-default-models.xml | 3 +
.../s390x-ccw-default-models.xml | 2 +
.../tpm-emulator-spapr.ppc64-latest.args | 45 ------------
.../tpm-emulator-spapr.ppc64-latest.xml | 1 -
tests/qemuxmlconfdata/tpm-emulator-spapr.xml | 70 -------------------
...fault-models.x86_64-latest.abi-update.args | 3 +
...efault-models.x86_64-latest.abi-update.xml | 3 +
...86_64-pc-default-models.x86_64-latest.args | 3 +
...x86_64-pc-default-models.x86_64-latest.xml | 3 +
.../x86_64-pc-default-models.xml | 3 +
...fault-models.x86_64-latest.abi-update.args | 3 +
...efault-models.x86_64-latest.abi-update.xml | 3 +
...6_64-q35-default-models.x86_64-latest.args | 3 +
...86_64-q35-default-models.x86_64-latest.xml | 3 +
.../x86_64-q35-default-models.xml | 3 +
tests/qemuxmlconftest.c | 2 -
37 files changed, 100 insertions(+), 215 deletions(-)
delete mode 100644 tests/qemuxmlconfdata/aarch64-tpm.aarch64-latest.args
delete mode 100644 tests/qemuxmlconfdata/aarch64-tpm.aarch64-latest.xml
delete mode 100644 tests/qemuxmlconfdata/aarch64-tpm.xml
delete mode 100644 tests/qemuxmlconfdata/tpm-emulator-spapr.ppc64-latest.args
delete mode 120000 tests/qemuxmlconfdata/tpm-emulator-spapr.ppc64-latest.xml
delete mode 100644 tests/qemuxmlconfdata/tpm-emulator-spapr.xml
--
2.45.1
3
9
Resolves: https://issues.redhat.com/browse/RHEL-23833
Signed-off-by: Adam Julis <ajulis(a)redhat.com>
---
src/qemu/qemu_driver.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 67b9778c67..74d5e3bb86 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -6847,6 +6847,15 @@ qemuDomainAttachDeviceConfig(virDomainDef *vmdef,
vmdef->vsock = g_steal_pointer(&dev->data.vsock);
break;
+ case VIR_DOMAIN_DEVICE_IOMMU:
+ if (vmdef->iommu) {
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+ _("domain already has an iommu configuration"));
+ return -1;
+ }
+ vmdef->iommu = g_steal_pointer(&dev->data.iommu);
+ break;
+
case VIR_DOMAIN_DEVICE_VIDEO:
case VIR_DOMAIN_DEVICE_GRAPHICS:
case VIR_DOMAIN_DEVICE_HUB:
@@ -6856,7 +6865,6 @@ qemuDomainAttachDeviceConfig(virDomainDef *vmdef,
case VIR_DOMAIN_DEVICE_NONE:
case VIR_DOMAIN_DEVICE_TPM:
case VIR_DOMAIN_DEVICE_PANIC:
- case VIR_DOMAIN_DEVICE_IOMMU:
case VIR_DOMAIN_DEVICE_AUDIO:
case VIR_DOMAIN_DEVICE_CRYPTO:
case VIR_DOMAIN_DEVICE_LAST:
@@ -7057,6 +7065,15 @@ qemuDomainDetachDeviceConfig(virDomainDef *vmdef,
g_clear_pointer(&vmdef->vsock, virDomainVsockDefFree);
break;
+ case VIR_DOMAIN_DEVICE_IOMMU:
+ if (!vmdef->iommu) {
+ virReportError(VIR_ERR_OPERATION_FAILED, "%s",
+ _("matching iommu config not found"));
+ return -1;
+ }
+ g_clear_pointer(&vmdef->iommu, virDomainIOMMUDefFree);
+ break;
+
case VIR_DOMAIN_DEVICE_VIDEO:
case VIR_DOMAIN_DEVICE_GRAPHICS:
case VIR_DOMAIN_DEVICE_HUB:
@@ -7066,7 +7083,6 @@ qemuDomainDetachDeviceConfig(virDomainDef *vmdef,
case VIR_DOMAIN_DEVICE_NONE:
case VIR_DOMAIN_DEVICE_TPM:
case VIR_DOMAIN_DEVICE_PANIC:
- case VIR_DOMAIN_DEVICE_IOMMU:
case VIR_DOMAIN_DEVICE_AUDIO:
case VIR_DOMAIN_DEVICE_CRYPTO:
case VIR_DOMAIN_DEVICE_LAST:
--
2.44.0
2
1
Although existing virDomainDefPostParse is called after modifying
the XML and it contains validating process for changed device,
the virDomainDefValidate function performs a more comprehensive
check. It should detect errors resulting from dependencies
between devices. Therefore, the virDomainDefValidate is added at
the end.
Signed-off-by: Adam Julis <ajulis(a)redhat.com>
---
src/qemu/qemu_driver.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index e2698c7924..67b9778c67 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -6869,6 +6869,9 @@ qemuDomainAttachDeviceConfig(virDomainDef *vmdef,
if (virDomainDefPostParse(vmdef, parse_flags, xmlopt, qemuCaps) < 0)
return -1;
+ if (virDomainDefValidate(vmdef, parse_flags, xmlopt, qemuCaps) < 0)
+ return -1;
+
return 0;
}
--
2.44.0
2
1
17 Jun '24
There are two scenarios identified after the recent firewall backend
selection was introduced, which result in libvirtd failing to startup
due to an inability to find either iptables/nftables
- On Linux if running unprivileged with $PATH lacking the dir
containing iptables/nftables
- On non-Linux where iptables/nftables never existed
In the former case, it is preferrable to restore the behaviour whereby
the driver starts successfully. Users will get an error reported when
attempting to start any virtual network, due to the lack of permissions
needed to create bridge devices. This makes the missing firewall backend
irrelevant.
In the latter case, the network driver calls the 'nop' platform
implementation which does not attempt to implement any firewall logic,
just allowing the network to start without firewall rules.
To solve this are number of changes are required
* Introduce VIR_FIREWALL_BACKEND_NONE, which does nothing except
report a fatal error from virFirewallApply(). This code path
is unreachable, since we'll never create a virFirewall
object with with VIR_FIREWALL_BACKEND_NONE, so the error reporting
is just a sanity check.
* Ignore the compile time backend defaults and assume use of
the 'none' backend if running unprivileged.
This fixes the first regression, avoiding the failure to start
libvirtd on Linux in unprivileged context, instead allowing use
of the driver and expecting a permission denied when creating a
bridge.
* Reject the use of compile time backend defaults no non-Linux
and hardcode the 'none' backend. The non-Linux platforms have
no firewall implementation at all currently, so there's no
reason to permit the use of 'firewall_backend_priority'
meson option.
This fixes the second regression, avoiding the failure to start
libvirtd on non-Linux hosts due to non-existant Linux binaries.
* Change the Linux platform backend to raise an error if the
firewall backend is 'none'. Again this code path is unreachable
by default since we'll fail to create the bridge before getting
here, but if someone modified network.conf to request the 'none'
backend, this will stop further progress.
* Change the nop platform backend to raise an error if the
firewall backend is 'iptables' or 'nftables'. Again this code
path is unreachable, since we should already have failed to
find the iptables/nftables binaries on non-Linux hosts, so
this is just a sanity check.
* 'none' is not permited as a value in 'firewall_backend_priority'
meson option, since it is conceptually meaningless to ask for
that on Linux.
NB, 'firewall_backend_priority' allows repeated options temporarily,
which we don't want. Meson intends to turn this into a hard error
DEPRECATION: Duplicated values in array option is deprecated. This will become a hard error in the future.
and we can live with the reduced error checking until that happens.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
Changed in v3:
- Fix various syntax-check errors
- Added note about meson tightening up validation of duplicated
choices
meson.build | 26 +++++++++++++++++++-------
meson_options.txt | 2 +-
po/POTFILES | 1 +
src/network/bridge_driver_conf.c | 19 ++++++++++++++-----
src/network/bridge_driver_linux.c | 10 ++++++++++
src/network/bridge_driver_nop.c | 15 ++++++++++++++-
src/util/virfirewall.c | 6 ++++++
src/util/virfirewall.h | 1 +
8 files changed, 66 insertions(+), 14 deletions(-)
diff --git a/meson.build b/meson.build
index 5c7cd7ec2e..2e8b87280d 100644
--- a/meson.build
+++ b/meson.build
@@ -1647,15 +1647,27 @@ if not get_option('driver_network').disabled() and conf.has('WITH_LIBVIRTD')
conf.set('WITH_NETWORK', 1)
firewall_backend_priority = get_option('firewall_backend_priority')
- if (not firewall_backend_priority.contains('nftables') or
- not firewall_backend_priority.contains('iptables') or
- firewall_backend_priority.length() != 2)
- error('invalid value for firewall_backend_priority option')
+ if firewall_backend_priority.length() == 0
+ if host_machine.system() == 'linux'
+ firewall_backend_priority = ['nftables', 'iptables']
+ else
+ # No firewall impl on non-Linux so far, so force 'none'
+ # as placeholder
+ firewall_backend_priority = ['none']
+ endif
+ else
+ if host_machine.system() != 'linux'
+ error('firewall backend priority only supported on linux hosts')
+ endif
endif
- conf.set('FIREWALL_BACKEND_PRIORITY_0', 'VIR_FIREWALL_BACKEND_' + firewall_backend_priority[0].to_upper())
- conf.set('FIREWALL_BACKEND_PRIORITY_1', 'VIR_FIREWALL_BACKEND_' + firewall_backend_priority[1].to_upper())
- conf.set('FIREWALL_BACKEND_PRIORITY_NUM', firewall_backend_priority.length())
+ backends = []
+ foreach backend: firewall_backend_priority
+ backend = 'VIR_FIREWALL_BACKEND_' + backend.to_upper()
+ backends += backend
+ endforeach
+
+ conf.set('FIREWALL_BACKENDS', ', '.join(backends))
elif get_option('driver_network').enabled()
error('libvirtd must be enabled to build the network driver')
endif
diff --git a/meson_options.txt b/meson_options.txt
index 50d71427cb..2d440c63d8 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -117,7 +117,7 @@ option('dtrace', type: 'feature', value: 'auto', description: 'use dtrace for st
option('firewalld', type: 'feature', value: 'auto', description: 'firewalld support')
# dep:firewalld
option('firewalld_zone', type: 'feature', value: 'auto', description: 'whether to install firewalld libvirt zone')
-option('firewall_backend_priority', type: 'array', choices: ['nftables', 'iptables'], description: 'order in which to try firewall backends')
+option('firewall_backend_priority', type: 'array', choices: ['nftables', 'iptables'], value: [], description: 'order in which to try firewall backends')
option('host_validate', type: 'feature', value: 'auto', description: 'build virt-host-validate')
option('init_script', type: 'combo', choices: ['systemd', 'openrc', 'check', 'none'], value: 'check', description: 'Style of init script to install')
option('loader_nvram', type: 'string', value: '', description: 'Pass list of pairs of <loader>:<nvram> paths. Both pairs and list items are separated by a colon.')
diff --git a/po/POTFILES b/po/POTFILES
index 4bfbb91164..1ed4086d2c 100644
--- a/po/POTFILES
+++ b/po/POTFILES
@@ -143,6 +143,7 @@ src/lxc/lxc_process.c
src/network/bridge_driver.c
src/network/bridge_driver_conf.c
src/network/bridge_driver_linux.c
+src/network/bridge_driver_nop.c
src/network/leaseshelper.c
src/network/network_iptables.c
src/network/network_nftables.c
diff --git a/src/network/bridge_driver_conf.c b/src/network/bridge_driver_conf.c
index e2f3613a41..9da5e790b7 100644
--- a/src/network/bridge_driver_conf.c
+++ b/src/network/bridge_driver_conf.c
@@ -61,6 +61,7 @@ networkGetDnsmasqCaps(virNetworkDriverState *driver)
static int
virNetworkLoadDriverConfig(virNetworkDriverConfig *cfg G_GNUC_UNUSED,
+ bool privileged,
const char *filename)
{
g_autoptr(virConf) conf = NULL;
@@ -68,13 +69,17 @@ virNetworkLoadDriverConfig(virNetworkDriverConfig *cfg G_GNUC_UNUSED,
bool fwBackendSelected = false;
size_t i;
int fwBackends[] = {
- FIREWALL_BACKEND_PRIORITY_0,
- FIREWALL_BACKEND_PRIORITY_1,
+ FIREWALL_BACKENDS
};
- G_STATIC_ASSERT(G_N_ELEMENTS(fwBackends) == VIR_FIREWALL_BACKEND_LAST);
- G_STATIC_ASSERT(G_N_ELEMENTS(fwBackends) == FIREWALL_BACKEND_PRIORITY_NUM);
+ G_STATIC_ASSERT(G_N_ELEMENTS(fwBackends) > 0 &&
+ G_N_ELEMENTS(fwBackends) <= VIR_FIREWALL_BACKEND_LAST);
int nFwBackends = G_N_ELEMENTS(fwBackends);
+ if (!privileged) {
+ fwBackends[0] = VIR_FIREWALL_BACKEND_NONE;
+ nFwBackends = 1;
+ }
+
if (access(filename, R_OK) == 0) {
conf = virConfReadFile(filename, 0);
@@ -104,6 +109,10 @@ virNetworkLoadDriverConfig(virNetworkDriverConfig *cfg G_GNUC_UNUSED,
for (i = 0; i < nFwBackends && !fwBackendSelected; i++) {
switch ((virFirewallBackend)fwBackends[i]) {
+ case VIR_FIREWALL_BACKEND_NONE:
+ fwBackendSelected = true;
+ break;
+
case VIR_FIREWALL_BACKEND_IPTABLES: {
g_autofree char *iptablesInPath = virFindFileInPath(IPTABLES);
@@ -187,7 +196,7 @@ virNetworkDriverConfigNew(bool privileged)
configfile = g_strconcat(configdir, "/network.conf", NULL);
- if (virNetworkLoadDriverConfig(cfg, configfile) < 0)
+ if (virNetworkLoadDriverConfig(cfg, privileged, configfile) < 0)
return NULL;
if (g_mkdir_with_parents(cfg->stateDir, 0777) < 0) {
diff --git a/src/network/bridge_driver_linux.c b/src/network/bridge_driver_linux.c
index 35e6bd1154..fe7c6e193c 100644
--- a/src/network/bridge_driver_linux.c
+++ b/src/network/bridge_driver_linux.c
@@ -47,6 +47,11 @@ networkFirewallSetupPrivateChains(virFirewallBackend backend,
virFirewallLayer layer)
{
switch (backend) {
+ case VIR_FIREWALL_BACKEND_NONE:
+ virReportError(VIR_ERR_NO_SUPPORT, "%s",
+ _("No firewall backend is available"));
+ return -1;
+
case VIR_FIREWALL_BACKEND_IPTABLES:
return iptablesSetupPrivateChains(layer);
@@ -417,6 +422,11 @@ networkAddFirewallRules(virNetworkDef *def,
}
switch (firewallBackend) {
+ case VIR_FIREWALL_BACKEND_NONE:
+ virReportError(VIR_ERR_NO_SUPPORT, "%s",
+ _("No firewall backend is available"));
+ return -1;
+
case VIR_FIREWALL_BACKEND_IPTABLES:
return iptablesAddFirewallRules(def, fwRemoval);
diff --git a/src/network/bridge_driver_nop.c b/src/network/bridge_driver_nop.c
index 537b9234f8..8bf3367bff 100644
--- a/src/network/bridge_driver_nop.c
+++ b/src/network/bridge_driver_nop.c
@@ -19,6 +19,8 @@
#include <config.h>
+#define VIR_FROM_THIS VIR_FROM_NETWORK
+
void networkPreReloadFirewallRules(virNetworkDriverState *driver G_GNUC_UNUSED,
bool startup G_GNUC_UNUSED,
bool force G_GNUC_UNUSED)
@@ -37,9 +39,20 @@ int networkCheckRouteCollision(virNetworkDef *def G_GNUC_UNUSED)
}
int networkAddFirewallRules(virNetworkDef *def G_GNUC_UNUSED,
- virFirewallBackend firewallBackend G_GNUC_UNUSED,
+ virFirewallBackend firewallBackend,
virFirewall **fwRemoval G_GNUC_UNUSED)
{
+ /*
+ * Shouldn't be possible, since virNetworkLoadDriverConfig
+ * ought to fail to find the required binaries when loading,
+ * so this is just a sanity check
+ */
+ if (firewallBackend != VIR_FIREWALL_BACKEND_NONE) {
+ virReportError(VIR_ERR_NO_SUPPORT,
+ _("Firewall backend '%1$s' not available on this platform"),
+ virFirewallBackendTypeToString(firewallBackend));
+ return -1;
+ }
return 0;
}
diff --git a/src/util/virfirewall.c b/src/util/virfirewall.c
index 2219506b18..090dbcdbed 100644
--- a/src/util/virfirewall.c
+++ b/src/util/virfirewall.c
@@ -37,6 +37,7 @@ VIR_LOG_INIT("util.firewall");
VIR_ENUM_IMPL(virFirewallBackend,
VIR_FIREWALL_BACKEND_LAST,
+ "none",
"iptables",
"nftables");
@@ -815,6 +816,11 @@ virFirewallApplyCmd(virFirewall *firewall,
}
switch (virFirewallGetBackend(firewall)) {
+ case VIR_FIREWALL_BACKEND_NONE:
+ virReportError(VIR_ERR_NO_SUPPORT, "%s",
+ _("Firewall backend is not implemented"));
+ return -1;
+
case VIR_FIREWALL_BACKEND_IPTABLES:
if (virFirewallCmdIptablesApply(firewall, fwCmd, &output) < 0)
return -1;
diff --git a/src/util/virfirewall.h b/src/util/virfirewall.h
index 302a6a4e5b..bce51259d2 100644
--- a/src/util/virfirewall.h
+++ b/src/util/virfirewall.h
@@ -44,6 +44,7 @@ typedef enum {
} virFirewallLayer;
typedef enum {
+ VIR_FIREWALL_BACKEND_NONE, /* Always fails */
VIR_FIREWALL_BACKEND_IPTABLES,
VIR_FIREWALL_BACKEND_NFTABLES,
--
2.45.1
2
1
[PATCH] conf: Drop needless NULL checks guarding virBufferEscapeString()
by Michal Privoznik 17 Jun '24
by Michal Privoznik 17 Jun '24
17 Jun '24
There's no need to guard virBufferEscapeString() with a call to
NULL as the very first thing the function does is check all three
arguments for NULL.
This patch was generated using the following spatch:
@@
expression X, Y, E;
@@
- if (E)
virBufferEscapeString(X, Y, E);
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/conf/capabilities.c | 6 ++--
src/conf/domain_conf.c | 57 +++++++++++-------------------
src/conf/network_conf.c | 6 ++--
src/conf/node_device_conf.c | 57 ++++++++++++------------------
src/conf/snapshot_conf.c | 5 ++-
src/conf/storage_encryption_conf.c | 9 ++---
src/conf/storage_source_conf.c | 3 +-
src/conf/virnwfilterbindingdef.c | 3 +-
8 files changed, 55 insertions(+), 91 deletions(-)
diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
index fe5e42c167..74e6293766 100644
--- a/src/conf/capabilities.c
+++ b/src/conf/capabilities.c
@@ -693,10 +693,8 @@ virCapabilitiesDomainDataLookupInternal(virCaps *caps,
if (domaintype > VIR_DOMAIN_VIRT_NONE)
virBufferAsprintf(&buf, "domaintype=%s ",
virDomainVirtTypeToString(domaintype));
- if (emulator)
- virBufferEscapeString(&buf, "emulator=%s ", emulator);
- if (machinetype)
- virBufferEscapeString(&buf, "machine=%s ", machinetype);
+ virBufferEscapeString(&buf, "emulator=%s ", emulator);
+ virBufferEscapeString(&buf, "machine=%s ", machinetype);
if (virBufferCurrentContent(&buf) &&
!virBufferCurrentContent(&buf)[0])
virBufferAsprintf(&buf, "%s", _("any configuration"));
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index fde594f811..2f1e99865b 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -5394,8 +5394,7 @@ virDomainDeviceInfoFormat(virBuffer *buf,
if (rombar)
virBufferAsprintf(buf, " bar='%s'", rombar);
}
- if (info->romfile)
- virBufferEscapeString(buf, " file='%s'", info->romfile);
+ virBufferEscapeString(buf, " file='%s'", info->romfile);
virBufferAddLit(buf, "/>\n");
}
@@ -22175,8 +22174,7 @@ virSecurityDeviceLabelDefFormat(virBuffer *buf,
virBufferAddLit(buf, "<seclabel");
- if (def->model)
- virBufferEscapeString(buf, " model='%s'", def->model);
+ virBufferEscapeString(buf, " model='%s'", def->model);
if (def->labelskip)
virBufferAddLit(buf, " labelskip='yes'");
@@ -22371,8 +22369,7 @@ virDomainDiskSourceFormatNetwork(virBuffer *attrBuf,
virBufferAsprintf(childBuf, "<timeout seconds='%llu'/>\n", src->timeout);
if (src->protocol == VIR_STORAGE_NET_PROTOCOL_SSH) {
- if (src->ssh_known_hosts_file)
- virBufferEscapeString(childBuf, "<knownHosts path='%s'/>\n", src->ssh_known_hosts_file);
+ virBufferEscapeString(childBuf, "<knownHosts path='%s'/>\n", src->ssh_known_hosts_file);
if (src->ssh_keyfile || src->ssh_agent) {
virBufferAddLit(childBuf, "<identity");
@@ -23162,8 +23159,7 @@ virDomainControllerDefFormat(virBuffer *buf,
" type='%s' index='%d'",
type, def->idx);
- if (model)
- virBufferEscapeString(&attrBuf, " model='%s'", model);
+ virBufferEscapeString(&attrBuf, " model='%s'", model);
switch (def->type) {
case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL:
@@ -24581,8 +24577,7 @@ virDomainChrTargetDefFormat(virBuffer *buf,
case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_XEN:
case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO:
- if (def->target.name)
- virBufferEscapeString(buf, " name='%s'", def->target.name);
+ virBufferEscapeString(buf, " name='%s'", def->target.name);
if (def->targetType == VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO &&
def->state != VIR_DOMAIN_CHR_DEVICE_STATE_DEFAULT &&
@@ -26004,9 +25999,8 @@ virDomainGraphicsDefFormat(virBuffer *buf,
break;
}
- if (def->data.vnc.keymap)
- virBufferEscapeString(buf, " keymap='%s'",
- def->data.vnc.keymap);
+ virBufferEscapeString(buf, " keymap='%s'",
+ def->data.vnc.keymap);
if (def->data.vnc.sharePolicy)
virBufferAsprintf(buf, " sharePolicy='%s'",
@@ -26021,13 +26015,11 @@ virDomainGraphicsDefFormat(virBuffer *buf,
break;
case VIR_DOMAIN_GRAPHICS_TYPE_SDL:
- if (def->data.sdl.display)
- virBufferEscapeString(buf, " display='%s'",
- def->data.sdl.display);
+ virBufferEscapeString(buf, " display='%s'",
+ def->data.sdl.display);
- if (def->data.sdl.xauth)
- virBufferEscapeString(buf, " xauth='%s'",
- def->data.sdl.xauth);
+ virBufferEscapeString(buf, " xauth='%s'",
+ def->data.sdl.xauth);
if (def->data.sdl.fullscreen)
virBufferAddLit(buf, " fullscreen='yes'");
@@ -26066,9 +26058,8 @@ virDomainGraphicsDefFormat(virBuffer *buf,
break;
case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP:
- if (def->data.desktop.display)
- virBufferEscapeString(buf, " display='%s'",
- def->data.desktop.display);
+ virBufferEscapeString(buf, " display='%s'",
+ def->data.desktop.display);
if (def->data.desktop.fullscreen)
virBufferAddLit(buf, " fullscreen='yes'");
@@ -26121,9 +26112,8 @@ virDomainGraphicsDefFormat(virBuffer *buf,
break;
}
- if (def->data.spice.keymap)
- virBufferEscapeString(buf, " keymap='%s'",
- def->data.spice.keymap);
+ virBufferEscapeString(buf, " keymap='%s'",
+ def->data.spice.keymap);
if (def->data.spice.defaultMode != VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_ANY)
virBufferAsprintf(buf, " defaultMode='%s'",
@@ -26503,11 +26493,9 @@ virDomainResourceDefFormat(virBuffer *buf,
if (!def)
return;
- if (def->partition)
- virBufferEscapeString(&childBuf, "<partition>%s</partition>\n", def->partition);
+ virBufferEscapeString(&childBuf, "<partition>%s</partition>\n", def->partition);
- if (def->appid)
- virBufferEscapeString(&childBuf, "<fibrechannel appid='%s'/>\n", def->appid);
+ virBufferEscapeString(&childBuf, "<fibrechannel appid='%s'/>\n", def->appid);
virXMLFormatElement(buf, "resource", NULL, &childBuf);
}
@@ -26680,11 +26668,9 @@ virDomainSecDefFormat(virBuffer *buf, virDomainSecDef *sec)
virBufferAsprintf(&childBuf, "<reducedPhysBits>%d</reducedPhysBits>\n",
sev->reduced_phys_bits);
virBufferAsprintf(&childBuf, "<policy>0x%04x</policy>\n", sev->policy);
- if (sev->dh_cert)
- virBufferEscapeString(&childBuf, "<dhCert>%s</dhCert>\n", sev->dh_cert);
+ virBufferEscapeString(&childBuf, "<dhCert>%s</dhCert>\n", sev->dh_cert);
- if (sev->session)
- virBufferEscapeString(&childBuf, "<session>%s</session>\n", sev->session);
+ virBufferEscapeString(&childBuf, "<session>%s</session>\n", sev->session);
break;
}
@@ -27910,9 +27896,8 @@ virDomainDefFormatInternalSetRootName(virDomainDef *def,
for (i = 0; def->os.initenv && def->os.initenv[i]; i++)
virBufferAsprintf(buf, "<initenv name='%s'>%s</initenv>\n",
def->os.initenv[i]->name, def->os.initenv[i]->value);
- if (def->os.initdir)
- virBufferEscapeString(buf, "<initdir>%s</initdir>\n",
- def->os.initdir);
+ virBufferEscapeString(buf, "<initdir>%s</initdir>\n",
+ def->os.initdir);
if (def->os.inituser)
virBufferAsprintf(buf, "<inituser>%s</inituser>\n", def->os.inituser);
if (def->os.initgroup)
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
index cc92ed0b03..f5ccf4bd12 100644
--- a/src/conf/network_conf.c
+++ b/src/conf/network_conf.c
@@ -2004,10 +2004,8 @@ virNetworkDNSDefFormat(virBuffer *buf,
def->srvs[i].service);
virBufferEscapeString(buf, "protocol='%s'", def->srvs[i].protocol);
- if (def->srvs[i].domain)
- virBufferEscapeString(buf, " domain='%s'", def->srvs[i].domain);
- if (def->srvs[i].target)
- virBufferEscapeString(buf, " target='%s'", def->srvs[i].target);
+ virBufferEscapeString(buf, " domain='%s'", def->srvs[i].domain);
+ virBufferEscapeString(buf, " target='%s'", def->srvs[i].target);
if (def->srvs[i].port)
virBufferAsprintf(buf, " port='%d'", def->srvs[i].port);
if (def->srvs[i].priority)
diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
index fe6d9a36b2..d2b578178b 100644
--- a/src/conf/node_device_conf.c
+++ b/src/conf/node_device_conf.c
@@ -176,20 +176,16 @@ virNodeDeviceCapSystemDefFormat(virBuffer *buf,
{
char uuidstr[VIR_UUID_STRING_BUFLEN];
- if (data->system.product_name)
- virBufferEscapeString(buf, "<product>%s</product>\n",
- data->system.product_name);
+ virBufferEscapeString(buf, "<product>%s</product>\n",
+ data->system.product_name);
virBufferAddLit(buf, "<hardware>\n");
virBufferAdjustIndent(buf, 2);
- if (data->system.hardware.vendor_name)
- virBufferEscapeString(buf, "<vendor>%s</vendor>\n",
- data->system.hardware.vendor_name);
- if (data->system.hardware.version)
- virBufferEscapeString(buf, "<version>%s</version>\n",
- data->system.hardware.version);
- if (data->system.hardware.serial)
- virBufferEscapeString(buf, "<serial>%s</serial>\n",
- data->system.hardware.serial);
+ virBufferEscapeString(buf, "<vendor>%s</vendor>\n",
+ data->system.hardware.vendor_name);
+ virBufferEscapeString(buf, "<version>%s</version>\n",
+ data->system.hardware.version);
+ virBufferEscapeString(buf, "<serial>%s</serial>\n",
+ data->system.hardware.serial);
virUUIDFormat(data->system.hardware.uuid, uuidstr);
virBufferAsprintf(buf, "<uuid>%s</uuid>\n", uuidstr);
virBufferAdjustIndent(buf, -2);
@@ -197,15 +193,12 @@ virNodeDeviceCapSystemDefFormat(virBuffer *buf,
virBufferAddLit(buf, "<firmware>\n");
virBufferAdjustIndent(buf, 2);
- if (data->system.firmware.vendor_name)
- virBufferEscapeString(buf, "<vendor>%s</vendor>\n",
- data->system.firmware.vendor_name);
- if (data->system.firmware.version)
- virBufferEscapeString(buf, "<version>%s</version>\n",
- data->system.firmware.version);
- if (data->system.firmware.release_date)
- virBufferEscapeString(buf, "<release_date>%s</release_date>\n",
- data->system.firmware.release_date);
+ virBufferEscapeString(buf, "<vendor>%s</vendor>\n",
+ data->system.firmware.vendor_name);
+ virBufferEscapeString(buf, "<version>%s</version>\n",
+ data->system.firmware.version);
+ virBufferEscapeString(buf, "<release_date>%s</release_date>\n",
+ data->system.firmware.release_date);
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</firmware>\n");
}
@@ -225,9 +218,8 @@ virNodeDeviceCapMdevTypesFormat(virBuffer *buf,
virMediatedDeviceType *type = mdev_types[i];
virBufferEscapeString(buf, "<type id='%s'>\n", type->id);
virBufferAdjustIndent(buf, 2);
- if (type->name)
- virBufferEscapeString(buf, "<name>%s</name>\n",
- type->name);
+ virBufferEscapeString(buf, "<name>%s</name>\n",
+ type->name);
virBufferEscapeString(buf, "<deviceAPI>%s</deviceAPI>\n",
type->device_api);
virBufferAsprintf(buf,
@@ -454,10 +446,9 @@ virNodeDeviceCapUSBInterfaceDefFormat(virBuffer *buf,
data->usb_if.subclass);
virBufferAsprintf(buf, "<protocol>%d</protocol>\n",
data->usb_if.protocol);
- if (data->usb_if.description)
- virBufferEscapeString(buf,
- "<description>%s</description>\n",
- data->usb_if.description);
+ virBufferEscapeString(buf,
+ "<description>%s</description>\n",
+ data->usb_if.description);
}
@@ -469,9 +460,8 @@ virNodeDeviceCapNetDefFormat(virBuffer *buf,
virBufferEscapeString(buf, "<interface>%s</interface>\n",
data->net.ifname);
- if (data->net.address)
- virBufferEscapeString(buf, "<address>%s</address>\n",
- data->net.address);
+ virBufferEscapeString(buf, "<address>%s</address>\n",
+ data->net.address);
virInterfaceLinkFormat(buf, &data->net.lnk);
if (data->net.features) {
for (i = 0; i < VIR_NET_DEV_FEAT_LAST; i++) {
@@ -533,9 +523,8 @@ virNodeDeviceCapSCSIDefFormat(virBuffer *buf,
virBufferAsprintf(buf, "<target>%d</target>\n",
data->scsi.target);
virBufferAsprintf(buf, "<lun>%d</lun>\n", data->scsi.lun);
- if (data->scsi.type)
- virBufferEscapeString(buf, "<type>%s</type>\n",
- data->scsi.type);
+ virBufferEscapeString(buf, "<type>%s</type>\n",
+ data->scsi.type);
}
diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c
index d7fcded302..039ed77b84 100644
--- a/src/conf/snapshot_conf.c
+++ b/src/conf/snapshot_conf.c
@@ -819,9 +819,8 @@ virDomainSnapshotDefFormatInternal(virBuffer *buf,
virBufferAdjustIndent(buf, 2);
virBufferEscapeString(buf, "<name>%s</name>\n", def->parent.name);
- if (def->parent.description)
- virBufferEscapeString(buf, "<description>%s</description>\n",
- def->parent.description);
+ virBufferEscapeString(buf, "<description>%s</description>\n",
+ def->parent.description);
if (def->state)
virBufferAsprintf(buf, "<state>%s</state>\n",
virDomainSnapshotStateTypeToString(def->state));
diff --git a/src/conf/storage_encryption_conf.c b/src/conf/storage_encryption_conf.c
index 1849df5c6c..b86001ec50 100644
--- a/src/conf/storage_encryption_conf.c
+++ b/src/conf/storage_encryption_conf.c
@@ -317,16 +317,13 @@ virStorageEncryptionInfoDefFormat(virBuffer *buf,
{
virBufferEscapeString(buf, "<cipher name='%s'", enc->cipher_name);
virBufferAsprintf(buf, " size='%u'", enc->cipher_size);
- if (enc->cipher_mode)
- virBufferEscapeString(buf, " mode='%s'", enc->cipher_mode);
- if (enc->cipher_hash)
- virBufferEscapeString(buf, " hash='%s'", enc->cipher_hash);
+ virBufferEscapeString(buf, " mode='%s'", enc->cipher_mode);
+ virBufferEscapeString(buf, " hash='%s'", enc->cipher_hash);
virBufferAddLit(buf, "/>\n");
if (enc->ivgen_name) {
virBufferEscapeString(buf, "<ivgen name='%s'", enc->ivgen_name);
- if (enc->ivgen_hash)
- virBufferEscapeString(buf, " hash='%s'", enc->ivgen_hash);
+ virBufferEscapeString(buf, " hash='%s'", enc->ivgen_hash);
virBufferAddLit(buf, "/>\n");
}
}
diff --git a/src/conf/storage_source_conf.c b/src/conf/storage_source_conf.c
index 959ec5ed40..908bc5fab2 100644
--- a/src/conf/storage_source_conf.c
+++ b/src/conf/storage_source_conf.c
@@ -1347,8 +1347,7 @@ int
virStorageSourcePrivateDataFormatRelPath(virStorageSource *src,
virBuffer *buf)
{
- if (src->relPath)
- virBufferEscapeString(buf, "<relPath>%s</relPath>\n", src->relPath);
+ virBufferEscapeString(buf, "<relPath>%s</relPath>\n", src->relPath);
return 0;
}
diff --git a/src/conf/virnwfilterbindingdef.c b/src/conf/virnwfilterbindingdef.c
index 423ed7a392..fe45c84347 100644
--- a/src/conf/virnwfilterbindingdef.c
+++ b/src/conf/virnwfilterbindingdef.c
@@ -203,8 +203,7 @@ virNWFilterBindingDefFormatBuf(virBuffer *buf,
virBufferAddLit(buf, "</owner>\n");
virBufferEscapeString(buf, "<portdev name='%s'/>\n", def->portdevname);
- if (def->linkdevname)
- virBufferEscapeString(buf, "<linkdev name='%s'/>\n", def->linkdevname);
+ virBufferEscapeString(buf, "<linkdev name='%s'/>\n", def->linkdevname);
virMacAddrFormat(&def->mac, mac);
virBufferAsprintf(buf, "<mac address='%s'/>\n", mac);
--
2.44.2
2
1
17 Jun '24
There are two scenarios identified after the recent firewall backend
selection was introduced, which result in libvirtd failing to startup
due to an inability to find either iptables/nftables
- On Linux if running unprivileged with $PATH lacking the dir
containing iptables/nftables
- On non-Linux where iptables/nftables never existed
In the former case, it is preferrable to restore the behaviour whereby
the driver starts successfully. Users will get an error reported when
attempting to start any virtual network, due to the lack of permissions
needed to create bridge devices. This makes the missing firewall backend
irrelevant.
In the latter case, the network driver calls the 'nop' platform
implementation which does not attempt to implement any firewall logic,
just allowing the network to start without firewall rules.
To solve this are number of changes are required
* Introduce VIR_FIREWALL_BACKEND_NONE, which does nothing except
report a fatal error from virFirewallApply(). This code path
is unreachable, since we'll never create a virFirewall
object with with VIR_FIREWALL_BACKEND_NONE, so the error reporting
is just a sanity check.
* Ignore the compile time backend defaults and assume use of
the 'none' backend if running unprivileged.
This fixes the first regression, avoiding the failure to start
libvirtd on Linux in unprivileged context, instead allowing use
of the driver and expecting a permission denied when creating a
bridge.
* Reject the use of compile time backend defaults no non-Linux
and hardcode the 'none' backend. The non-Linux platforms have
no firewall implementation at all currently, so there's no
reason to permit the use of 'firewall_backend_priority'
meson option.
This fixes the second regression, avoiding the failure to start
libvirtd on non-Linux hosts due to non-existant Linux binaries.
* Change the Linux platform backend to raise an error if the
firewall backend is 'none'. Again this code path is unreachable
by default since we'll fail to create the bridge before getting
here, but if someone modified network.conf to request the 'none'
backend, this will stop further progress.
* Change the nop platform backend to raise an error if the
firewall backend is 'iptables' or 'nftables'. Again this code
path is unreachable, since we should already have failed to
find the iptables/nftables binaries on non-Linux hosts, so
this is just a sanity check.
* 'none' is not permited as a value in 'firewall_backend_priority'
meson option, since it is conceptually meaningless to ask for
that on Linux.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
Changed in v2:
- Fix build problems on FreeBSD (changes proposed by Roman)
meson.build | 26 +++++++++++++++++++-------
meson_options.txt | 2 +-
src/network/bridge_driver_conf.c | 19 ++++++++++++++-----
src/network/bridge_driver_linux.c | 10 ++++++++++
src/network/bridge_driver_nop.c | 15 ++++++++++++++-
src/util/virfirewall.c | 6 ++++++
src/util/virfirewall.h | 1 +
7 files changed, 65 insertions(+), 14 deletions(-)
diff --git a/meson.build b/meson.build
index 5c7cd7ec2e..2e8b87280d 100644
--- a/meson.build
+++ b/meson.build
@@ -1647,15 +1647,27 @@ if not get_option('driver_network').disabled() and conf.has('WITH_LIBVIRTD')
conf.set('WITH_NETWORK', 1)
firewall_backend_priority = get_option('firewall_backend_priority')
- if (not firewall_backend_priority.contains('nftables') or
- not firewall_backend_priority.contains('iptables') or
- firewall_backend_priority.length() != 2)
- error('invalid value for firewall_backend_priority option')
+ if firewall_backend_priority.length() == 0
+ if host_machine.system() == 'linux'
+ firewall_backend_priority = ['nftables', 'iptables']
+ else
+ # No firewall impl on non-Linux so far, so force 'none'
+ # as placeholder
+ firewall_backend_priority = ['none']
+ endif
+ else
+ if host_machine.system() != 'linux'
+ error('firewall backend priority only supported on linux hosts')
+ endif
endif
- conf.set('FIREWALL_BACKEND_PRIORITY_0', 'VIR_FIREWALL_BACKEND_' + firewall_backend_priority[0].to_upper())
- conf.set('FIREWALL_BACKEND_PRIORITY_1', 'VIR_FIREWALL_BACKEND_' + firewall_backend_priority[1].to_upper())
- conf.set('FIREWALL_BACKEND_PRIORITY_NUM', firewall_backend_priority.length())
+ backends = []
+ foreach backend: firewall_backend_priority
+ backend = 'VIR_FIREWALL_BACKEND_' + backend.to_upper()
+ backends += backend
+ endforeach
+
+ conf.set('FIREWALL_BACKENDS', ', '.join(backends))
elif get_option('driver_network').enabled()
error('libvirtd must be enabled to build the network driver')
endif
diff --git a/meson_options.txt b/meson_options.txt
index 50d71427cb..2d440c63d8 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -117,7 +117,7 @@ option('dtrace', type: 'feature', value: 'auto', description: 'use dtrace for st
option('firewalld', type: 'feature', value: 'auto', description: 'firewalld support')
# dep:firewalld
option('firewalld_zone', type: 'feature', value: 'auto', description: 'whether to install firewalld libvirt zone')
-option('firewall_backend_priority', type: 'array', choices: ['nftables', 'iptables'], description: 'order in which to try firewall backends')
+option('firewall_backend_priority', type: 'array', choices: ['nftables', 'iptables'], value: [], description: 'order in which to try firewall backends')
option('host_validate', type: 'feature', value: 'auto', description: 'build virt-host-validate')
option('init_script', type: 'combo', choices: ['systemd', 'openrc', 'check', 'none'], value: 'check', description: 'Style of init script to install')
option('loader_nvram', type: 'string', value: '', description: 'Pass list of pairs of <loader>:<nvram> paths. Both pairs and list items are separated by a colon.')
diff --git a/src/network/bridge_driver_conf.c b/src/network/bridge_driver_conf.c
index e2f3613a41..9da5e790b7 100644
--- a/src/network/bridge_driver_conf.c
+++ b/src/network/bridge_driver_conf.c
@@ -61,6 +61,7 @@ networkGetDnsmasqCaps(virNetworkDriverState *driver)
static int
virNetworkLoadDriverConfig(virNetworkDriverConfig *cfg G_GNUC_UNUSED,
+ bool privileged,
const char *filename)
{
g_autoptr(virConf) conf = NULL;
@@ -68,13 +69,17 @@ virNetworkLoadDriverConfig(virNetworkDriverConfig *cfg G_GNUC_UNUSED,
bool fwBackendSelected = false;
size_t i;
int fwBackends[] = {
- FIREWALL_BACKEND_PRIORITY_0,
- FIREWALL_BACKEND_PRIORITY_1,
+ FIREWALL_BACKENDS
};
- G_STATIC_ASSERT(G_N_ELEMENTS(fwBackends) == VIR_FIREWALL_BACKEND_LAST);
- G_STATIC_ASSERT(G_N_ELEMENTS(fwBackends) == FIREWALL_BACKEND_PRIORITY_NUM);
+ G_STATIC_ASSERT(G_N_ELEMENTS(fwBackends) > 0 &&
+ G_N_ELEMENTS(fwBackends) <= VIR_FIREWALL_BACKEND_LAST);
int nFwBackends = G_N_ELEMENTS(fwBackends);
+ if (!privileged) {
+ fwBackends[0] = VIR_FIREWALL_BACKEND_NONE;
+ nFwBackends = 1;
+ }
+
if (access(filename, R_OK) == 0) {
conf = virConfReadFile(filename, 0);
@@ -104,6 +109,10 @@ virNetworkLoadDriverConfig(virNetworkDriverConfig *cfg G_GNUC_UNUSED,
for (i = 0; i < nFwBackends && !fwBackendSelected; i++) {
switch ((virFirewallBackend)fwBackends[i]) {
+ case VIR_FIREWALL_BACKEND_NONE:
+ fwBackendSelected = true;
+ break;
+
case VIR_FIREWALL_BACKEND_IPTABLES: {
g_autofree char *iptablesInPath = virFindFileInPath(IPTABLES);
@@ -187,7 +196,7 @@ virNetworkDriverConfigNew(bool privileged)
configfile = g_strconcat(configdir, "/network.conf", NULL);
- if (virNetworkLoadDriverConfig(cfg, configfile) < 0)
+ if (virNetworkLoadDriverConfig(cfg, privileged, configfile) < 0)
return NULL;
if (g_mkdir_with_parents(cfg->stateDir, 0777) < 0) {
diff --git a/src/network/bridge_driver_linux.c b/src/network/bridge_driver_linux.c
index 35e6bd1154..fe7c6e193c 100644
--- a/src/network/bridge_driver_linux.c
+++ b/src/network/bridge_driver_linux.c
@@ -47,6 +47,11 @@ networkFirewallSetupPrivateChains(virFirewallBackend backend,
virFirewallLayer layer)
{
switch (backend) {
+ case VIR_FIREWALL_BACKEND_NONE:
+ virReportError(VIR_ERR_NO_SUPPORT, "%s",
+ _("No firewall backend is available"));
+ return -1;
+
case VIR_FIREWALL_BACKEND_IPTABLES:
return iptablesSetupPrivateChains(layer);
@@ -417,6 +422,11 @@ networkAddFirewallRules(virNetworkDef *def,
}
switch (firewallBackend) {
+ case VIR_FIREWALL_BACKEND_NONE:
+ virReportError(VIR_ERR_NO_SUPPORT, "%s",
+ _("No firewall backend is available"));
+ return -1;
+
case VIR_FIREWALL_BACKEND_IPTABLES:
return iptablesAddFirewallRules(def, fwRemoval);
diff --git a/src/network/bridge_driver_nop.c b/src/network/bridge_driver_nop.c
index 537b9234f8..2114d521d1 100644
--- a/src/network/bridge_driver_nop.c
+++ b/src/network/bridge_driver_nop.c
@@ -19,6 +19,8 @@
#include <config.h>
+#define VIR_FROM_THIS VIR_FROM_NETWORK
+
void networkPreReloadFirewallRules(virNetworkDriverState *driver G_GNUC_UNUSED,
bool startup G_GNUC_UNUSED,
bool force G_GNUC_UNUSED)
@@ -37,9 +39,20 @@ int networkCheckRouteCollision(virNetworkDef *def G_GNUC_UNUSED)
}
int networkAddFirewallRules(virNetworkDef *def G_GNUC_UNUSED,
- virFirewallBackend firewallBackend G_GNUC_UNUSED,
+ virFirewallBackend firewallBackend,
virFirewall **fwRemoval G_GNUC_UNUSED)
{
+ /*
+ * Shouldn't be possible, since virNetworkLoadDriverConfig
+ * ought to fail to find the required binaries when loading,
+ * so this is just a sanity check
+ */
+ if (firewallBackend != VIR_FIREWALL_BACKEND_NONE) {
+ virReportError(VIR_ERR_NO_SUPPORT,
+ _("Firewall backend '%s' not available on this platform"),
+ virFirewallBackendTypeToString(firewallBackend));
+ return -1;
+ }
return 0;
}
diff --git a/src/util/virfirewall.c b/src/util/virfirewall.c
index 2219506b18..d374f54b64 100644
--- a/src/util/virfirewall.c
+++ b/src/util/virfirewall.c
@@ -37,6 +37,7 @@ VIR_LOG_INIT("util.firewall");
VIR_ENUM_IMPL(virFirewallBackend,
VIR_FIREWALL_BACKEND_LAST,
+ "none",
"iptables",
"nftables");
@@ -815,6 +816,11 @@ virFirewallApplyCmd(virFirewall *firewall,
}
switch (virFirewallGetBackend(firewall)) {
+ case VIR_FIREWALL_BACKEND_NONE:
+ virReportError(VIR_ERR_NO_SUPPORT,
+ _("Firewall backend is not implemented"));
+ return -1;
+
case VIR_FIREWALL_BACKEND_IPTABLES:
if (virFirewallCmdIptablesApply(firewall, fwCmd, &output) < 0)
return -1;
diff --git a/src/util/virfirewall.h b/src/util/virfirewall.h
index 302a6a4e5b..bce51259d2 100644
--- a/src/util/virfirewall.h
+++ b/src/util/virfirewall.h
@@ -44,6 +44,7 @@ typedef enum {
} virFirewallLayer;
typedef enum {
+ VIR_FIREWALL_BACKEND_NONE, /* Always fails */
VIR_FIREWALL_BACKEND_IPTABLES,
VIR_FIREWALL_BACKEND_NFTABLES,
--
2.45.1
4
9
Daniel P. Berrangé (3):
docs: trim many projects from CI dashboard
docs: fix link to virttools-web pipeline status
docs: add libosinfo & virt-viewer to CI dashboard
docs/ci-dashboard.rst | 78 ++++++++++++++++++-------------------------
1 file changed, 32 insertions(+), 46 deletions(-)
--
2.45.1
3
5
17 Jun '24
The previous fix:
commit b069efe29c950d1a45e88ef7dc924d3ee223103a
Author: Daniel P. Berrangé <berrange(a)redhat.com>
Date: Fri Jun 14 19:57:06 2024 +0100
gitlab: fix codestyle CI job
was incomplete, as the job inheritance was also
broken.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
.gitlab-ci.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 635e731f82..6de867e1f2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -106,6 +106,7 @@ pages:
codestyle_job:
stage: sanity_checks
+ extends: .gitlab_native_build_job
needs:
- job: x86_64-opensuse-leap-15-container
optional: true
--
2.45.1
2
1
17 Jun '24
*** BLURB HERE ***
Michal Prívozník (2):
qemu_process: Issue an info message when subtracting isolcpus
virprocess: Debug affinity map in virProcessSetAffinity()
src/qemu/qemu_process.c | 6 ++++++
src/util/virprocess.c | 6 ++++--
2 files changed, 10 insertions(+), 2 deletions(-)
--
2.43.2
3
4
Jobs whose names start with a '.' as treated as templates, so
not actually run in a pipeline.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
.gitlab-ci.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d9d8b1e3cd..635e731f82 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -104,7 +104,7 @@ pages:
paths:
- public
-.codestyle_job:
+codestyle_job:
stage: sanity_checks
needs:
- job: x86_64-opensuse-leap-15-container
--
2.45.1
2
1
Re: [libvirt PATCH 00/28] native support for nftables in virtual
network driver
by Roman Bogorodskiy 14 Jun '24
by Roman Bogorodskiy 14 Jun '24
14 Jun '24
Laine Stump wrote:
> On 6/10/24 2:54 PM, Roman Bogorodskiy wrote:
> > Laine Stump wrote:
> >
> > > This patch series enables libvirt to use nftables rules rather than
> > > iptables *when setting up virtual networks* (it does *not* add
> > > nftables support to the nwfilter driver). It accomplishes this by
> > > abstracting several iptables functions (from viriptables.[ch] called
> > > by the virtual network driver into a rudimentary "virNetfilter API"
> > > (in virnetfilter.[ch], having the virtual network driver call the
> > > virNetFilter API rather than calling the existing iptables functions
> > > directly, and then finally adding an equivalent virNftables backend
> > > that can be used instead of iptables (selected manually via a
> > > network.conf setting, or automatically if iptables isn't found on the
> > > host).
> >
> > Hi,
> >
> > Apparently, I'm late to the discussion.
> >
> > I noticed that now I cannot use the bridge driver on FreeBSD as it's
> > failing to initialize both iptables and nftables backends (which is
> > expect).
>
> Yeah, previously we wouldn't check if iptables was available until someone
> tried to start a network that would need to use it, and would then log an
> error (and just fail starting that network, but the network driver would
> remain running). But now we figure out which firewall backend to use
> immediately when the driver is loaded, and if we fail to fin a workable
> backend we fail the entire driver init.r
>
> How did you use the network driver before? With a <forward mode='open'/>
> network? Truthfully I hadn't ever considered the case of someone using it
> with only network types that didn't need firewall rules. I wonder if there
> are other platforms we support that have a usable network driver for
> <forward mode='open'/> (MacOS?)
I'm using it with the following network configuration:
virsh # net-dumpxml default
<network>
<name>default</name>
<uuid>2a1415c9-325b-41e4-82c6-e805162d8934</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:24:fa:43'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
So basically all the mechanics like creating tap devices, bridges,
serving dhcp, etc, all these work for me. On top of that I had a few
iterations of manual firewall configurations (with both ipfw and pf)
to implement NAT on guests.
Unfortunately, I don't have access to that setup anymore and I haven't
re-created it yet. IIRC, it could probably show some warnings about
missing iptables, but it didn't affect anything for me.
> >
> > What would be a good way to address that? I see at least two options:
> >
> > 1. Add a Noop firewall driver
> > 2. Implement a "real" FreeBSD driver based either on pf or ipfw (that's
> > been on my TODO list forever, but I somehow got stuck on the very first
> > step on choosing between pf and ipfw).
>
> Why not both? :-)
>
> > This obviously will take much
> > more time.
> >
> > Maybe there are other options I'm missing.
>
> Obviously (2) would be nicest, but I guess in the short term some variation
> of (1) would be quicker.
>
> Another possibility could be to restore the old behavior of saving the error
> and only reporting it when a network requiring a firewall is loaded, but I
> think I remember a discussion about this during review of an earlier
> revision of the patches, and we agreed that it made the problem easier to
> find if it was reported immediately and the driver load failed.
>
> I suppose in the long run the build-time option firewall_backend_priority
> should be used to control which backends are included in the build (rather
> than just which ones are checked at runtime), so that FreeBSD could
> completely skip all the iptables and nftables code (and firewalld when
> that's done), and Linux platforms could skip pf and ipfw.
>
> >
> > What do you think?
>
> I'm about to be offline for 3 weeks, but in the meantime if you'd like to
> try making a NULL backend that is only an option if it's listed in
> firewall_backend_priority (you'll need to remove the compile-time check that
> all possible backends are accounted for - I think that is the first of the
> two G_STATIC_ASSERTS at the top of virNetworkLoadDriverConfig()), always
> initializes successfully in bridge_driver_conf.c if it is listed in the
> options, and then in networkAddFirewallRules add a check to log an error and
> fail if backend == NULL (something about attempting to start a network type
> that would require firewall rules, but the system not having any of the
> supported types of firewallbackend or something - it's too late now and my
> brain is too fried and sleepy to think of good wording :-)). As long as it
> isn't a valid selection on Linux builds that are done with
> firewall_backend_priority=nftables,iptables, but *is* a valid selection if
> the setting is "firewall_backend_priority=null" that shouldn't be *too*
> controversial.
Ok, I think I can try making the NULL backend.
> Later we can talk about pf and ipfw backends :-)
Yeah, that sounds good. My main problem with the choice is that ipfw is
the most actively supported firewall, but it relies quite heavily on the
rule numbering, which makes it a little hard to integrate with
user-specific rules (i.e. defined outside of libvirt). The "pf" seem to
be better in this regard (at least to my taste), but it's not "native"
FreeBSD firewall and is not as active (at least, to my impression).
Roman
4
13
The third patch MIGHT fix the following issue:
https://issues.redhat.com/browse/RHEL-22574
but at this point it's still unclear. I'll append appropriate
'Resolves:' line when I learn more.
Michal Prívozník (3):
virfirewall: Fir a memleak in virFirewallParseXML()
virnetworkobj: Free fwRemoval before setting another one in
virNetworkObjSetFwRemoval()
remote_daemon_dispatch: Unref sasl session when closing client
connection
src/conf/virnetworkobj.c | 1 +
src/remote/remote_daemon_dispatch.c | 4 ++++
src/util/virfirewall.c | 2 +-
3 files changed, 6 insertions(+), 1 deletion(-)
--
2.44.2
2
6
13 Jun '24
There are two scenarios identified after the recent firewall backend
selection was introduced, which result in libvirtd failing to startup
due to an inability to find either iptables/nftables
- On Linux if running unprivileged with $PATH lacking the dir
containing iptables/nftables
- On non-Linux where iptables/nftables never existed
In the former case, it is preferrable to restore the behaviour whereby
the driver starts successfully. Users will get an error reported when
attempting to start any virtual network, due to the lack of permissions
needed to create bridge devices. This makes the missing firewall backend
irrelevant.
In the latter case, the network driver calls the 'nop' platform
implementation which does not attempt to implement any firewall logic,
just allowing the network to start without firewall rules.
To solve this are number of changes are required
* Introduce VIR_FIREWALL_BACKEND_NONE, which does nothing except
report a fatal error from virFirewallApply(). This code path
is unreachable, since we'll never create a virFirewall
object with with VIR_FIREWALL_BACKEND_NONE, so the error reporting
is just a sanity check.
* Ignore the compile time backend defaults and assume use of
the 'none' backend if running unprivileged.
This fixes the first regression, avoiding the failure to start
libvirtd on Linux in unprivileged context, instead allowing use
of the driver and expecting a permission denied when creating a
bridge.
* Reject the use of compile time backend defaults no non-Linux
and hardcode the 'none' backend. The non-Linux platforms have
no firewall implementation at all currently, so there's no
reason to permit the use of 'firewall_backend_priority'
meson option.
This fixes the second regression, avoiding the failure to start
libvirtd on non-Linux hosts due to non-existant Linux binaries.
* Change the Linux platform backend to raise an error if the
firewall backend is 'none'. Again this code path is unreachable
by default since we'll fail to create the bridge before getting
here, but if someone modified network.conf to request the 'none'
backend, this will stop further progress.
* Change the nop platform backend to raise an error if the
firewall backend is 'iptables' or 'nftables'. Again this code
path is unreachable, since we should already have failed to
find the iptables/nftables binaries on non-Linux hosts, so
this is just a sanity check.
* 'none' is not permited as a value in 'firewall_backend_priority'
meson option, since it is conceptually meaningless to ask for
that on Linux.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
meson.build | 26 +++++++++++++++++++-------
meson_options.txt | 2 +-
src/network/bridge_driver_conf.c | 19 ++++++++++++++-----
src/network/bridge_driver_linux.c | 10 ++++++++++
src/network/bridge_driver_nop.c | 13 ++++++++++++-
src/util/virfirewall.c | 6 ++++++
src/util/virfirewall.h | 1 +
7 files changed, 63 insertions(+), 14 deletions(-)
diff --git a/meson.build b/meson.build
index 5c7cd7ec2e..2e8b87280d 100644
--- a/meson.build
+++ b/meson.build
@@ -1647,15 +1647,27 @@ if not get_option('driver_network').disabled() and conf.has('WITH_LIBVIRTD')
conf.set('WITH_NETWORK', 1)
firewall_backend_priority = get_option('firewall_backend_priority')
- if (not firewall_backend_priority.contains('nftables') or
- not firewall_backend_priority.contains('iptables') or
- firewall_backend_priority.length() != 2)
- error('invalid value for firewall_backend_priority option')
+ if firewall_backend_priority.length() == 0
+ if host_machine.system() == 'linux'
+ firewall_backend_priority = ['nftables', 'iptables']
+ else
+ # No firewall impl on non-Linux so far, so force 'none'
+ # as placeholder
+ firewall_backend_priority = ['none']
+ endif
+ else
+ if host_machine.system() != 'linux'
+ error('firewall backend priority only supported on linux hosts')
+ endif
endif
- conf.set('FIREWALL_BACKEND_PRIORITY_0', 'VIR_FIREWALL_BACKEND_' + firewall_backend_priority[0].to_upper())
- conf.set('FIREWALL_BACKEND_PRIORITY_1', 'VIR_FIREWALL_BACKEND_' + firewall_backend_priority[1].to_upper())
- conf.set('FIREWALL_BACKEND_PRIORITY_NUM', firewall_backend_priority.length())
+ backends = []
+ foreach backend: firewall_backend_priority
+ backend = 'VIR_FIREWALL_BACKEND_' + backend.to_upper()
+ backends += backend
+ endforeach
+
+ conf.set('FIREWALL_BACKENDS', ', '.join(backends))
elif get_option('driver_network').enabled()
error('libvirtd must be enabled to build the network driver')
endif
diff --git a/meson_options.txt b/meson_options.txt
index 50d71427cb..2d440c63d8 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -117,7 +117,7 @@ option('dtrace', type: 'feature', value: 'auto', description: 'use dtrace for st
option('firewalld', type: 'feature', value: 'auto', description: 'firewalld support')
# dep:firewalld
option('firewalld_zone', type: 'feature', value: 'auto', description: 'whether to install firewalld libvirt zone')
-option('firewall_backend_priority', type: 'array', choices: ['nftables', 'iptables'], description: 'order in which to try firewall backends')
+option('firewall_backend_priority', type: 'array', choices: ['nftables', 'iptables'], value: [], description: 'order in which to try firewall backends')
option('host_validate', type: 'feature', value: 'auto', description: 'build virt-host-validate')
option('init_script', type: 'combo', choices: ['systemd', 'openrc', 'check', 'none'], value: 'check', description: 'Style of init script to install')
option('loader_nvram', type: 'string', value: '', description: 'Pass list of pairs of <loader>:<nvram> paths. Both pairs and list items are separated by a colon.')
diff --git a/src/network/bridge_driver_conf.c b/src/network/bridge_driver_conf.c
index e2f3613a41..9da5e790b7 100644
--- a/src/network/bridge_driver_conf.c
+++ b/src/network/bridge_driver_conf.c
@@ -61,6 +61,7 @@ networkGetDnsmasqCaps(virNetworkDriverState *driver)
static int
virNetworkLoadDriverConfig(virNetworkDriverConfig *cfg G_GNUC_UNUSED,
+ bool privileged,
const char *filename)
{
g_autoptr(virConf) conf = NULL;
@@ -68,13 +69,17 @@ virNetworkLoadDriverConfig(virNetworkDriverConfig *cfg G_GNUC_UNUSED,
bool fwBackendSelected = false;
size_t i;
int fwBackends[] = {
- FIREWALL_BACKEND_PRIORITY_0,
- FIREWALL_BACKEND_PRIORITY_1,
+ FIREWALL_BACKENDS
};
- G_STATIC_ASSERT(G_N_ELEMENTS(fwBackends) == VIR_FIREWALL_BACKEND_LAST);
- G_STATIC_ASSERT(G_N_ELEMENTS(fwBackends) == FIREWALL_BACKEND_PRIORITY_NUM);
+ G_STATIC_ASSERT(G_N_ELEMENTS(fwBackends) > 0 &&
+ G_N_ELEMENTS(fwBackends) <= VIR_FIREWALL_BACKEND_LAST);
int nFwBackends = G_N_ELEMENTS(fwBackends);
+ if (!privileged) {
+ fwBackends[0] = VIR_FIREWALL_BACKEND_NONE;
+ nFwBackends = 1;
+ }
+
if (access(filename, R_OK) == 0) {
conf = virConfReadFile(filename, 0);
@@ -104,6 +109,10 @@ virNetworkLoadDriverConfig(virNetworkDriverConfig *cfg G_GNUC_UNUSED,
for (i = 0; i < nFwBackends && !fwBackendSelected; i++) {
switch ((virFirewallBackend)fwBackends[i]) {
+ case VIR_FIREWALL_BACKEND_NONE:
+ fwBackendSelected = true;
+ break;
+
case VIR_FIREWALL_BACKEND_IPTABLES: {
g_autofree char *iptablesInPath = virFindFileInPath(IPTABLES);
@@ -187,7 +196,7 @@ virNetworkDriverConfigNew(bool privileged)
configfile = g_strconcat(configdir, "/network.conf", NULL);
- if (virNetworkLoadDriverConfig(cfg, configfile) < 0)
+ if (virNetworkLoadDriverConfig(cfg, privileged, configfile) < 0)
return NULL;
if (g_mkdir_with_parents(cfg->stateDir, 0777) < 0) {
diff --git a/src/network/bridge_driver_linux.c b/src/network/bridge_driver_linux.c
index 35e6bd1154..fe7c6e193c 100644
--- a/src/network/bridge_driver_linux.c
+++ b/src/network/bridge_driver_linux.c
@@ -47,6 +47,11 @@ networkFirewallSetupPrivateChains(virFirewallBackend backend,
virFirewallLayer layer)
{
switch (backend) {
+ case VIR_FIREWALL_BACKEND_NONE:
+ virReportError(VIR_ERR_NO_SUPPORT, "%s",
+ _("No firewall backend is available"));
+ return -1;
+
case VIR_FIREWALL_BACKEND_IPTABLES:
return iptablesSetupPrivateChains(layer);
@@ -417,6 +422,11 @@ networkAddFirewallRules(virNetworkDef *def,
}
switch (firewallBackend) {
+ case VIR_FIREWALL_BACKEND_NONE:
+ virReportError(VIR_ERR_NO_SUPPORT, "%s",
+ _("No firewall backend is available"));
+ return -1;
+
case VIR_FIREWALL_BACKEND_IPTABLES:
return iptablesAddFirewallRules(def, fwRemoval);
diff --git a/src/network/bridge_driver_nop.c b/src/network/bridge_driver_nop.c
index 537b9234f8..7797be1ba8 100644
--- a/src/network/bridge_driver_nop.c
+++ b/src/network/bridge_driver_nop.c
@@ -37,9 +37,20 @@ int networkCheckRouteCollision(virNetworkDef *def G_GNUC_UNUSED)
}
int networkAddFirewallRules(virNetworkDef *def G_GNUC_UNUSED,
- virFirewallBackend firewallBackend G_GNUC_UNUSED,
+ virFirewallBackend firewallBackend,
virFirewall **fwRemoval G_GNUC_UNUSED)
{
+ /*
+ * Shouldn't be possible, since virNetworkLoadDriverConfig
+ * ought to fail to find the required binaries when loading,
+ * so this is just a sanity check
+ */
+ if (firewallBackend != VIR_FIREWALL_NONE) {
+ virReportError(VIR_ERR_NO_SUPPORT, "%s",
+ _("Firewall backend '%s' not available on this platform"),
+ virFirewallBackendTypeToSTring(firewallBackend));
+ return -1;
+ }
return 0;
}
diff --git a/src/util/virfirewall.c b/src/util/virfirewall.c
index 2219506b18..d374f54b64 100644
--- a/src/util/virfirewall.c
+++ b/src/util/virfirewall.c
@@ -37,6 +37,7 @@ VIR_LOG_INIT("util.firewall");
VIR_ENUM_IMPL(virFirewallBackend,
VIR_FIREWALL_BACKEND_LAST,
+ "none",
"iptables",
"nftables");
@@ -815,6 +816,11 @@ virFirewallApplyCmd(virFirewall *firewall,
}
switch (virFirewallGetBackend(firewall)) {
+ case VIR_FIREWALL_BACKEND_NONE:
+ virReportError(VIR_ERR_NO_SUPPORT,
+ _("Firewall backend is not implemented"));
+ return -1;
+
case VIR_FIREWALL_BACKEND_IPTABLES:
if (virFirewallCmdIptablesApply(firewall, fwCmd, &output) < 0)
return -1;
diff --git a/src/util/virfirewall.h b/src/util/virfirewall.h
index 302a6a4e5b..bce51259d2 100644
--- a/src/util/virfirewall.h
+++ b/src/util/virfirewall.h
@@ -44,6 +44,7 @@ typedef enum {
} virFirewallLayer;
typedef enum {
+ VIR_FIREWALL_BACKEND_NONE, /* Always fails */
VIR_FIREWALL_BACKEND_IPTABLES,
VIR_FIREWALL_BACKEND_NFTABLES,
--
2.45.1
2
1
13 Jun '24
We should gracefully skip startup when:
* No network.conf firewall_backend is explicitly set, and
neither iptables/nftables are present
* Running unprivileged
The former fixes libvirtd startup on non-Linux, or minimal linux
installs without firewall tools.
The latter skips pointless initialization that creates a driver
that cannot do anything useful
Daniel P. Berrangé (2):
network: skip network driver init if no firewall backend is present
network: don't attempt to initialize if non-privileged
src/network/bridge_driver.c | 14 +++++++++++++-
src/network/bridge_driver_conf.c | 8 ++++----
2 files changed, 17 insertions(+), 5 deletions(-)
--
2.45.1
3
6
13 Jun '24
A couple of paths passed in the error messages, didnt match the paths
that were actually being tested.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
tools/virt-pki-validate.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/virt-pki-validate.c b/tools/virt-pki-validate.c
index 656f29fdc5..e693ffaed6 100644
--- a/tools/virt-pki-validate.c
+++ b/tools/virt-pki-validate.c
@@ -184,7 +184,7 @@ virPKIValidateIdentity(bool isServer, bool system, const char *path)
_("Checking system cert dir access"),
0, 0, 0755,
_("The system cert dir %1$s must be accessible to all users. As root, run: chown root.root; chmod 0755 %2$s"),
- LIBVIRT_PKI_DIR, LIBVIRT_PKI_DIR);
+ LIBVIRT_CERT_DIR, LIBVIRT_CERT_DIR);
FILE_REQUIRE_EXISTS(scope,
LIBVIRT_KEY_DIR,
@@ -197,7 +197,7 @@ virPKIValidateIdentity(bool isServer, bool system, const char *path)
_("Checking system key dir access"),
0, 0, 0755,
_("The system key dir %1$s must be accessible to all users. As root, run: chown root.root; chmod 0755 %2$s"),
- LIBVIRT_KEY_DIR, LIBVIRT_PKI_DIR);
+ LIBVIRT_KEY_DIR, LIBVIRT_KEY_DIR);
} else if (path) {
virNetTLSConfigCustomTrust(path,
&cacert,
--
2.45.1
2
1
[libvirt PATCH 00/28] native support for nftables in virtual network driver
by Laine Stump 12 Jun '24
by Laine Stump 12 Jun '24
12 Jun '24
This patch series enables libvirt to use nftables rules rather than
iptables *when setting up virtual networks* (it does *not* add
nftables support to the nwfilter driver). It accomplishes this by
abstracting several iptables functions (from viriptables.[ch] called
by the virtual network driver into a rudimentary "virNetfilter API"
(in virnetfilter.[ch], having the virtual network driver call the
virNetFilter API rather than calling the existing iptables functions
directly, and then finally adding an equivalent virNftables backend
that can be used instead of iptables (selected manually via a
network.conf setting, or automatically if iptables isn't found on the
host).
A first look at the result may have you thinking that it's filled with
a lot of bad decisions. While I would agree with that in many cases, I
think that overall they are the "least bad" decisions, or at least
"bad within acceptable limits / no worse than something else", and
point out that it's been done in a way that minimizes (actually
eliminates) the need for immediate changes to nwfilter (the other
consumer of iptables, which *also* needs to be updated to use native
nftables), and makes it much easier to change our mind about the
details in the future.
When I first started on this (long, protracted, repeatedly interrupted
for extended periods - many of these patches are > a year old) task, I
considered doing an all-at-once complete replacement of iptables with
nftables, since all the Linux distros we support have had nftables for
several years, and I'm pretty sure nobody has it disabled (not even
sure if it's possible to disable nftables while still enabling
iptables, since they both use xtables in the kernel). But due to
libvirt's use of "-t mangle -j CHECKSUM --checksum-fill" (see commit
fd5b15ff all the way back in July 2010 for details) which has no
equivalent in nftables rules (and we don't *want* it to!!), and the
desire to be able to easily switch back to iptables in case of an
unforeseen regression, we decided that both iptables and nftables need
to be supported (for now), with the default (for now) remaining as
iptables.
Just allowing for dual backends complicated matters, since it means
that we have to have a config file, a setting, detection of which
backends are available, and of course some sort of concept of an
abstracted frontend that can use either backend based on the config
setting (and/or auto-detection). Combining that with the fact that it
would just be "too big" of a project to switch over nwfilter's
iptables usage at the same time means that we have to keep around a
lot of existing code for compatibility's sake rather than just wiping
it all away and starting over.
So, what I've ended up with is:
1) a network.conf file (didn't exist before) with a single setting
"firewall_backend". If unset, the network driver tries to use iptables
on the backend, and if that's missing, then tries to use nftables.
2) a new (internal-only, so transient!) virNetFilterXXX API that is
used by the network driver in place of the iptablesXXX API, and calls
either iptablesXXX or:
3) a virNftablesXXX API that exactly replicates the filtering rules of
the existing iptablesXXX API (except in the custom "libvirt" base
table rather than the system "filter" and "nat" tables). This means
that:
4) when the nftables backend is used, the rules added are *exactly the
same* (functionally speaking) as we currently add for iptables (except
they are in the "libvirt" table).
We had spent some time in IRC discussing different ways of using new
functionality available in nftables to make a more
efficient/performant implemention of the desired filtering, and there
are some really great possibilities that need to be explored, but in
the end there were too many details up in the air, and I decided that
it would be more "accomplishable" (coined a new word there!) to first
replicate existing behavior with nftables, but do it inside a
framework that makes it easy to modify the details in the future (in
particular making it painless to switch back and forth between builds
with differing filter models at runtime) - this way we'll be able to
separate the infrastructure work from the details of the rules (which
we can then more easily work on and experiment with). (This implies
that the main objective right now is "get rid of iptables
dependencies", not "make the filtering faster and more efficient").
Notable features of this patchset:
* allows switching between iptables/nftables backends without
rebooting or restarting networks/guests.
Because the commands required to remove a network's filter rules are
now saved in the network status XML, each time libvirtd (or
virtnetworkd) is restarted, it will execute exactly the commands
needed to remove the filter rules that had been added by the
previous libvirtd/virtnetworkd (rather than just making a guess, as
we've always done up until now), and then add new rules using the
current backend+binary's set of rules (while also saving the info
needed for future removal of these new rules back into the network's
status XML).
* firewall_backend can be explicitly set in (new)
/etc/libvirt/network.conf, but if it's not explicitly set, libvirt
will default to the iptables backend if the iptables binary is
found, and otherwise fall back to nftables as long as the nft
binary is found; otherwise the first attempt to start a network will
fail with an appropriate error.
Things that seem ugly / that I would like to clean up / that I think
are just fine as they are:
* virFirewall does *not* provide a backend-agnostic interface [this is fine]
* We need to maintain a backward-compatible API for virFirewall so
that we don't have to touch nwfilter code. Trying to make its API
backend-agnostic would require individually considering/changing
every nwfilter use of virFirewall.
* instead virFirewall objects are just a way to build a collection
of commands to execute to build a firewall, then execute them
while collecting info for and building a collection of commands
that will tear down that firewall in the future.
Do I want to "fix" this in the future by making virFirewall a higher
level interface that accepts tokens describing the type of rule to
add (rather than backend-specific arguments to a backend-specific
command)? No. I think I like the way virFirewall works (as
described in that previous bullet-point), instead I'm thinking that
it is just slightly mis-named - I've lately been thinking of it as a
"virNetFilterCmdList". Similarly, the virFirewallRules that it has a
list of aren't really "rules", they are better described as commands
or actions, so maybe they should be renamed to virNetfilterCmd or
virNetfilterAction. But that is just cosmetic, so I didn't want to
get into it in these patches (especially in case someone disagrees,
or has a better idea for naming).
* Speaking of renaming - I should probably rename all the
"iptablesXXX" functions to "virIptablesXXX" to be consistent with so
much of our other code. I lost the ambition to deal with it right
now though, so I'm leaving that for later cleanup (or I could do it
now if it really makes someone's day :-).
* I could have chosen a higher place in the callchain to make the
virNetfilter abstraction, e.g. at the level of
"networkAddXXXFirewallRules()" rather than at the lower level of
iptablesXXX(). That is actually probably what will happen in the
future (since it will be necessary in order for an nftables-based
firewall to be significantly different in structure from an
iptables-based firewall). But that's the beauty of an API being
private - we can freely add/remove things as needed. the important
thing is that we now have the basic structure there.
For now, the split is just above the existing iptablesXXX API
(util/viriptables.[ch], which seems like a "narrow" enough
place. Most iptablesXXX functions are written in terms of just 10
*other* iptablesXXX functions that add iptables-specific commands -
I've just moved those functions into virnetfilter.[ch]
(appropriately renamed), and changed them to call the 10
virNetfilterXXX functions that will in-turn call those 10
iptablesXXX (or equivalent virNftablesXXX) functions.
* Some people may dislike that the 10 virNetfilterXXX functions are
each written with a switch statement that has cases to directly call
each backend, rather than each backend driver having a table of
pointers to API functions, with the virNetfilter API function
calling backends[fwBackend]->XXX() (ie the pattern for so many
drivers in libvirt). But for just 2 backends, that really seemed
like overkill and unnecessary obfuscation.
* As implemented here, I am storing a "<fwRemoval>" element in the
network status XML - it contains a serialized virFirewall object
that directly contains the commands necessary to remove the
firewall. I could instead just store "<firewall>", which would
include all the commands that were used to *create* the firewall in
addition to the commands needed to remove the firewall. The way it's
done currently takes up less space; switching to storing the full
firewall *might* be more informative to somebody, but on the other
hand would make the network status XML *very* long. If anybody has
an opinion about this, now is the time to bring it up - do you think
it's worth having a separate list of all the commands that were used
to create a network's firewall (keeping in mind that there is no
public API to access it)? Or is it enough to just store what's
needed to remove the firewall?
* Several months ago Eric Garver posted patches for a pure firewalld
backend, and I requested that they not be pushed because I wanted
that to be integrated with my nftables backend support. Due to the
fact that the firewalld backend is almost entirely implemented by
putting the bridge into a new firewalld "zone", with no individual
rules added, that won't happen as just another backend driver file
in parallel to iptables and nftables; it will instead work by
checking firewall_backend at a higher level in the network driver,
thus avoiding the calls to virNetfilterXXX() entirely. I have
locally merged Eric's patches over the top of these patches, and
there are surprisingly few conflicts, but since his patches didn't
account for a user-settable config (but instead just always used the
firewalld backend if firewalld was active), some of the patches are
going to require a bit of rework, which I'll take care of after
getting these patches in.
Laine Stump (28):
util: add -w/--concurrent when applying the rule rather than when
building it
util: new virFirewallRuleGet*() APIs
util: determine ignoreErrors value when creating rule, not when
applying
util: rename iptables helpers that will become the frontend for
ip&nftables
util: move backend-agnostic virNetfilter*() functions to their own
file
util: make netfilter action a proper typedefed (virFirewall) enum
util: #define the names used for private packet filter chains
util: move/rename virFirewallApplyRuleDirect to
virIptablesApplyFirewallRule
util/network: reintroduce virFirewallBackend, but different
network: add (empty) network.conf file to distribution files
network: allow setting firewallBackend from network.conf
network: do not add DHCP checksum mangle rule unless using iptables
network: call backend agnostic function to init private filter chains
util: setup functions in virnetfilter which will call appropriate
backend
build: add nft to the list of binaries we attempt to locate
util: add nftables backend to virnetfilter API used by network driver
tests: test cases for nftables backend
util: new functions to support adding individual rollback rules
util: check for 0 args when applying iptables rule
util: implement rollback rule autosave for iptables backend
util: implement rollback rule autosave for nftables backend
network: turn on auto-rollback for the rules added for virtual
networks
util: new function virFirewallNewFromRollback()
util: new functions virFirewallParseXML() and virFirewallFormat()
conf: add a virFirewall object to virNetworkObj
network: use previously saved list of firewall rules when removing
network: save network status when firewall rules are reloaded
network: improve log message when reloading virtual network firewall
rules
libvirt.spec.in | 5 +
meson.build | 1 +
po/POTFILES | 2 +
src/conf/virnetworkobj.c | 40 +
src/conf/virnetworkobj.h | 11 +
src/libvirt_private.syms | 68 +-
src/network/bridge_driver.c | 40 +-
src/network/bridge_driver_conf.c | 44 +
src/network/bridge_driver_conf.h | 3 +
src/network/bridge_driver_linux.c | 241 +++--
src/network/bridge_driver_nop.c | 6 +-
src/network/bridge_driver_platform.h | 6 +-
src/network/libvirtd_network.aug | 39 +
src/network/meson.build | 11 +
src/network/network.conf | 24 +
src/network/test_libvirtd_network.aug.in | 5 +
src/nwfilter/nwfilter_ebiptables_driver.c | 16 +-
src/util/meson.build | 2 +
src/util/virebtables.c | 4 +-
src/util/virfirewall.c | 490 ++++++++--
src/util/virfirewall.h | 51 +-
src/util/viriptables.c | 762 ++++-----------
src/util/viriptables.h | 222 ++---
src/util/virnetfilter.c | 892 ++++++++++++++++++
src/util/virnetfilter.h | 159 ++++
src/util/virnftables.c | 698 ++++++++++++++
src/util/virnftables.h | 118 +++
.../{base.args => base.iptables} | 0
tests/networkxml2firewalldata/base.nftables | 256 +++++
...-linux.args => nat-default-linux.iptables} | 0
.../nat-default-linux.nftables | 248 +++++
...pv6-linux.args => nat-ipv6-linux.iptables} | 0
.../nat-ipv6-linux.nftables | 384 ++++++++
...rgs => nat-ipv6-masquerade-linux.iptables} | 0
.../nat-ipv6-masquerade-linux.nftables | 456 +++++++++
...linux.args => nat-many-ips-linux.iptables} | 0
.../nat-many-ips-linux.nftables | 472 +++++++++
...-linux.args => nat-no-dhcp-linux.iptables} | 0
.../nat-no-dhcp-linux.nftables | 384 ++++++++
...ftp-linux.args => nat-tftp-linux.iptables} | 0
.../nat-tftp-linux.nftables | 274 ++++++
...inux.args => route-default-linux.iptables} | 0
.../route-default-linux.nftables | 162 ++++
tests/networkxml2firewalltest.c | 56 +-
tests/virfirewalltest.c | 20 +-
45 files changed, 5718 insertions(+), 954 deletions(-)
create mode 100644 src/network/libvirtd_network.aug
create mode 100644 src/network/network.conf
create mode 100644 src/network/test_libvirtd_network.aug.in
create mode 100644 src/util/virnetfilter.c
create mode 100644 src/util/virnetfilter.h
create mode 100644 src/util/virnftables.c
create mode 100644 src/util/virnftables.h
rename tests/networkxml2firewalldata/{base.args => base.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/base.nftables
rename tests/networkxml2firewalldata/{nat-default-linux.args => nat-default-linux.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/nat-default-linux.nftables
rename tests/networkxml2firewalldata/{nat-ipv6-linux.args => nat-ipv6-linux.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/nat-ipv6-linux.nftables
rename tests/networkxml2firewalldata/{nat-ipv6-masquerade-linux.args => nat-ipv6-masquerade-linux.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/nat-ipv6-masquerade-linux.nftables
rename tests/networkxml2firewalldata/{nat-many-ips-linux.args => nat-many-ips-linux.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/nat-many-ips-linux.nftables
rename tests/networkxml2firewalldata/{nat-no-dhcp-linux.args => nat-no-dhcp-linux.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/nat-no-dhcp-linux.nftables
rename tests/networkxml2firewalldata/{nat-tftp-linux.args => nat-tftp-linux.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/nat-tftp-linux.nftables
rename tests/networkxml2firewalldata/{route-default-linux.args => route-default-linux.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/route-default-linux.nftables
--
2.39.2
7
78
There has been interest in creating an equivalent to the libvirt-go-xml-module
project, but for Rust. Thus I've created the following new project:
https://gitlab.com/libvirt/libvirt-rust-xml
Don't expect to see any actual code there yet. It is just the absolute bare
minimum Rust boilerplate setup and CI integration to allow us to kick off
the concept. Anyone interested in this should open issues/merge requests
there in the usual way.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
1
0
From: Chun Feng Wu <wucf(a)linux.ibm.com>
Hi,
I am thinking to leverage "throttle block filter" in QEMU to support more flexible I/O limits(e.g. tiered I/O groups), one sample provided by QEMU doc is:
https://github.com/qemu/qemu/blob/master/docs/throttle.txt
"For example, let's say that we have three different drives and we want to set I/O limits for
each one of them and an additional set of limits for the combined I/O of all three drives."
The implementation idea is to
- Define throttle groups(limit) in domain
- Define throttle filter to reference throttle group within disk
- Within domain disk, throttle filters references multiple throttle groups to form filter chain to apply multiple limits in QEMU like above sample
- Add new virsh cmds for throttle group management:
throttlegroupset Add or update a throttling group.
throttlegroupdel Delete a throttling group.
throttlegroupinfo Get a throttling group.
throttlegrouplist list all domain throttlegroups
- Update "attach-disk" to add one more option "--throttle-groups" to apply throttle filters e.g. "virsh attach-disk $VM_ID ${DISK_PATH}/vm1_disk_2.qcow2 vdd --driver qemu --subdriver qcow2 --targetbus virtio --throttle-groups limit2,limit012"
- I chose above semantics as I felt they're appropriate, if there are better ones please kindly suggest.
This patchset includes:
- Throttle group and throttle filter definition in patch 1
- New QMP processing to update and get throttle group in patch 2
- New API definition and implementation in patch 3
- QEMU driver implementation in patch 4
- Hotplug and qemuProcessLaunch flow implemenation in patch 5,6
- Domain XML schema and doc(formatdomain.rst) change in patch 7
- Tests in patch 8,9
- Virsh cmd implementation in patch 10
- Other verification implementation in patch 11, 12
v2 changes:
- fix failure caused by "check-remote_protocol" between patch 3 and patch 9 in v1
- make sure coding style is consistent about function declaration
- patch 3 in v1 is splitted into two commits: "remote: New APIs for ThrottleGroup lifecycle management" and "qemu: Implement qemu driver for throttle API"
- replace "// comment" with "/* comment */"
- avoid empty 'cleanup' labels
- use "virJSONValueObjectAdd(&limits, "P:name", value)" to avoid introducing extra helper, and check return value
- preserve spacing between blocks of code which are not related
- remove "VSH_OT_ALIAS" section for new cmds in virsh_domain.c
From QMP perspective, the sample flow works this way:
- Throttle group creation:
virsh qemu-monitor-command 1 '{"execute":"object-add", "arguments":{"qom-type":"throttle-group","id":"limit0","limits":{"iops-total":200,"iops-read":0,"iops-total-max":200,"iops-total-max-length":1}}}'
virsh qemu-monitor-command 1 '{"execute":"object-add", "arguments":{"qom-type":"throttle-group","id":"limit1","limits":{"iops-total":250,"iops-read":0,"iops-total-max":250,"iops-total-max-length":1}}}'
virsh qemu-monitor-command 1 '{"execute":"object-add", "arguments":{"qom-type":"throttle-group","id":"limit2","limits":{"iops-total":300,"iops-read":0,"iops-total-max":300,"iops-total-max-length":1}}}'
virsh qemu-monitor-command 1 '{"execute":"object-add", "arguments":{"qom-type":"throttle-group","id":"limit012","limits":{"iops-total":400,"iops-read":0,"iops-total-max":400,"iops-total-max-length":1}}}'
- Chain up filters during attaching disk to apply two filters(limit0 and limit012):
virsh qemu-monitor-command 1 '{"execute":"blockdev-add", "arguments": {"driver":"file","filename":"/virt/disks/vm1_disk_1.qcow2","node-name":"test-3-storage","auto-read-only":true,"discard":"unmap"}}'
virsh qemu-monitor-command 1 '{"execute":"blockdev-add", "arguments":{"node-name":"test-3-format","read-only":false,"driver":"qcow2","file":"test-3-storage","backing":null}}'
virsh qemu-monitor-command 1 '{"execute":"blockdev-add", "arguments":{"driver":"throttle","node-name":"libvirt-5-filter","throttle-group": "limit0","file":"test-3-format"}}'
virsh qemu-monitor-command 1 '{"execute":"blockdev-add", "arguments": {"driver":"throttle","node-name":"libvirt-6-filter","throttle-group":"limit012","file":"libvirt-5-filter"}}'
virsh qemu-monitor-command 1 '{"execute": "device_add", "arguments": {"driver":"virtio-blk-pci","scsi":false,"bus":"pci.0","addr":"0x5","drive":"libvirt-6-filter","id":"virtio-disk1"}}'
Any comments/suggestions will be appriciated!
Chun Feng Wu (10):
config: Introduce ThrottleGroup and ThrottleFilter
qemu: monitor: Add support for ThrottleGroup operations
remote: New APIs for ThrottleGroup lifecycle management
qemu: Implement qemu driver for throttle API
qemu: hotplug: Support hot attach block disk along with throttle
filters
qemu: command: Support throttle groups and filters during
qemuProcessLaunch
schema: Add new domain elements to support multiple throttle filters
test: Test throttle group lifecycle APIs
tests: Test qemuMonitorJSONGetThrottleGroup and
qemuMonitorJSONUpdateThrottleGroup
virsh: Add support for throttle group operations
Hao Ning Xin (1):
config: validate: Verify throttle group fields
Yan Xiu Wu (1):
config: validate: Use "iotune" and "throttlefilters" exclusively for
specific disk
docs/formatdomain.rst | 48 ++
include/libvirt/libvirt-domain.h | 29 +
src/conf/domain_conf.c | 386 +++++++++++++
src/conf/domain_conf.h | 54 ++
src/conf/domain_validate.c | 120 ++--
src/conf/schemas/domaincommon.rng | 164 +++++-
src/conf/virconftypes.h | 4 +
src/driver-hypervisor.h | 22 +
src/libvirt-domain.c | 190 +++++++
src/libvirt_private.syms | 9 +
src/libvirt_public.syms | 7 +
src/qemu/qemu_block.c | 131 +++++
src/qemu/qemu_block.h | 53 ++
src/qemu/qemu_command.c | 158 ++++++
src/qemu/qemu_command.h | 9 +
src/qemu/qemu_domain.c | 85 +++
src/qemu/qemu_domain.h | 15 +
src/qemu/qemu_driver.c | 529 ++++++++++++++++++
src/qemu/qemu_hotplug.c | 24 +
src/qemu/qemu_monitor.c | 34 ++
src/qemu/qemu_monitor.h | 14 +
src/qemu/qemu_monitor_json.c | 151 +++++
src/qemu/qemu_monitor_json.h | 14 +
src/remote/remote_daemon_dispatch.c | 61 ++
src/remote/remote_driver.c | 49 ++
src/remote/remote_protocol.x | 50 +-
src/remote_protocol-structs | 30 +
src/test/test_driver.c | 382 +++++++++++++
tests/qemumonitorjsontest.c | 88 +++
.../qemustatusxml2xmldata/backup-pull-in.xml | 1 +
.../blockjob-blockdev-in.xml | 1 +
.../blockjob-mirror-in.xml | 1 +
.../migration-in-params-in.xml | 1 +
.../migration-out-nbd-bitmaps-in.xml | 1 +
.../migration-out-nbd-out.xml | 1 +
.../migration-out-nbd-tls-out.xml | 1 +
.../migration-out-params-in.xml | 1 +
tests/qemustatusxml2xmldata/modern-in.xml | 1 +
tests/qemustatusxml2xmldata/upgrade-out.xml | 1 +
.../qemustatusxml2xmldata/vcpus-multi-in.xml | 1 +
tools/virsh-completer-domain.c | 64 +++
tools/virsh-completer-domain.h | 10 +
tools/virsh-domain.c | 471 ++++++++++++++++
43 files changed, 3430 insertions(+), 36 deletions(-)
--
2.34.1
3
39
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
NEWS.rst | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/NEWS.rst b/NEWS.rst
index f3ca29443a..bc8acc62d4 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -19,6 +19,13 @@ v10.5.0 (unreleased)
* **Improvements**
+ * tools: virt-pki-validate has been rewritten in C
+
+ The ``virt-pki-validate`` shell script has been rewritten as a C program,
+ providing an output format that matches ``virt-host-validate``, removing
+ the dependency on ``certtool`` and providing more comprehensive checks
+ of the certificate properties.
+
* **Bug fixes**
--
2.45.1
2
1
[PATCH 0/3] qemu: Fix missing validation of 'scsi' property support for 'virtio-blk' and update capabilites dump for qemu-9.1
by Peter Krempa 11 Jun '24
by Peter Krempa 11 Jun '24
11 Jun '24
Peter Krempa (3):
qemuValidateDomainDeviceDefDiskFrontend: Refactor validation of <disk
type='lun'>
qemu_validate: Validate support for SCSI emulation support in
'virtio-blk' devices
qemucapabilitiestest: Update test data for qemu 9.1 dev cycle
src/qemu/qemu_validate.c | 38 +-
.../caps_9.1.0_x86_64.replies | 3210 +++++++++--------
.../caps_9.1.0_x86_64.xml | 16 +-
...test.args => virtio-lun.x86_64-9.0.0.args} | 2 +-
...latest.xml => virtio-lun.x86_64-9.0.0.xml} | 2 +-
.../virtio-lun.x86_64-latest.err | 1 +
tests/qemuxmlconftest.c | 3 +-
7 files changed, 1716 insertions(+), 1556 deletions(-)
rename tests/qemuxmlconfdata/{virtio-lun.x86_64-latest.args => virtio-lun.x86_64-9.0.0.args} (96%)
rename tests/qemuxmlconfdata/{virtio-lun.x86_64-latest.xml => virtio-lun.x86_64-9.0.0.xml} (97%)
create mode 100644 tests/qemuxmlconfdata/virtio-lun.x86_64-latest.err
--
2.45.2
2
5
11 Jun '24
This conversion was missed in the previous commit:
commit a7eb7de53171b4cdabc3d36524c468abfe2590fa
Author: Daniel P. Berrangé <berrange(a)redhat.com>
Date: Thu Jun 6 12:57:08 2024 +0100
meson: allow systemd unitdir to be changed
Reported-by: Yaakov Selkowitz <yselkowi(a)redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
tools/meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/meson.build b/tools/meson.build
index 1bb84be0be..07f8c1bf28 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -322,7 +322,7 @@ if conf.has('WITH_LIBVIRTD')
output: '@BASENAME@',
configuration: tools_conf,
install: true,
- install_dir: prefix / 'lib' / 'systemd' / 'system',
+ install_dir: unitdir,
)
endif
endif
--
2.43.0
2
1
This was driven by the complaint that libvirt pulls in gnutls-utils
https://src.fedoraproject.org/rpms/virt-viewer/pull-request/4
but also it lets us remove more usage of Shell code from libvirt,
as well as improving the consistency of certificate checks vs the
runtime checks we do.
Daniel P. Berrangé (9):
rpc: split out helpers for TLS cert path location
rpc: refactor method for checking session certificates
rpc: split TLS cert validation into separate file
docs: fix author credit for virt-pki-validate tool
tools: split off common helpers for host validate tool
tools: drop unused --version argument
tools: stop checking init scripts & iptables config
tools: reimplement virt-pki-validate in C
tools: support validating user/custom PKI certs
docs/manpages/virt-pki-validate.rst | 9 +-
libvirt.spec.in | 2 -
po/POTFILES | 3 +
src/rpc/meson.build | 7 +-
src/rpc/virnettlscert.c | 553 ++++++++++++++++++++++++++
src/rpc/virnettlscert.h | 42 ++
src/rpc/virnettlsconfig.c | 202 ++++++++++
src/rpc/virnettlsconfig.h | 68 ++++
src/rpc/virnettlscontext.c | 586 +---------------------------
tools/meson.build | 31 +-
tools/virt-host-validate-ch.c | 12 +-
tools/virt-host-validate-common.c | 308 ++++++---------
tools/virt-host-validate-common.h | 48 +--
tools/virt-host-validate-lxc.c | 18 +-
tools/virt-host-validate-qemu.c | 30 +-
tools/virt-host-validate.c | 2 +-
tools/virt-login-shell-helper.c | 2 +-
tools/virt-pki-query-dn.c | 2 +-
tools/virt-pki-validate.c | 424 ++++++++++++++++++++
tools/virt-pki-validate.in | 323 ---------------
tools/virt-validate-common.c | 110 ++++++
tools/virt-validate-common.h | 57 +++
22 files changed, 1670 insertions(+), 1169 deletions(-)
create mode 100644 src/rpc/virnettlscert.c
create mode 100644 src/rpc/virnettlscert.h
create mode 100644 src/rpc/virnettlsconfig.c
create mode 100644 src/rpc/virnettlsconfig.h
create mode 100644 tools/virt-pki-validate.c
delete mode 100644 tools/virt-pki-validate.in
create mode 100644 tools/virt-validate-common.c
create mode 100644 tools/virt-validate-common.h
--
2.43.0
2
14
Change the 'include' in the AppArmor policy to use 'include if exists'
when including <uuid>.files. Note that 'if exists' is only available
after AppArmor 3.0, therefore a #ifdef check must be added.
When the <uuid>.files is not present, there are some failures in the
AppArmor tools like the following, since they expect the file to exist
when using 'include':
ERROR: Include file /etc/apparmor.d/libvirt/libvirt-8534a409-a460-4fab-a2dd-0e1dce4ff273.files not found
Signed-off-by: Georgia Garcia <georgia.garcia(a)canonical.com>
---
src/security/virt-aa-helper.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c
index 0374581f07..402cbd9602 100644
--- a/src/security/virt-aa-helper.c
+++ b/src/security/virt-aa-helper.c
@@ -1564,7 +1564,12 @@ main(int argc, char **argv)
/* create the profile from TEMPLATE */
if (ctl->cmd == 'c' || purged) {
char *tmp = NULL;
- tmp = g_strdup_printf(" #include <libvirt/%s.files>\n", ctl->uuid);
+#if defined(WITH_APPARMOR_3)
+ const char *ifexists = "if exists ";
+#else
+ const char *ifexists = "";
+#endif
+ tmp = g_strdup_printf(" #include %s<libvirt/%s.files>\n", ifexists, ctl->uuid);
if (ctl->dryrun) {
vah_info(profile);
--
2.34.1
2
3
[libvirt PATCH 00/28] native support for nftables in virtual network
driver
by Laine Stump 11 Jun '24
by Laine Stump 11 Jun '24
11 Jun '24
(After replying to your message, I noticed that you had sent it as a
reply to a much earlier version of the nftables patches sent a year ago
to the old mailing list, rather than the most recent version that was
pushed, which was very different, and sent to deel(a)lists.libvirt.org, so
I'm re-sending my response, but to the new mailing list :-))
On 6/10/24 2:54 PM, Roman Bogorodskiy wrote:
> Laine Stump wrote:
>
>> This patch series enables libvirt to use nftables rules rather than
>> iptables *when setting up virtual networks* (it does *not* add
>> nftables support to the nwfilter driver). It accomplishes this by
>> abstracting several iptables functions (from viriptables.[ch] called
>> by the virtual network driver into a rudimentary "virNetfilter API"
>> (in virnetfilter.[ch], having the virtual network driver call the
>> virNetFilter API rather than calling the existing iptables functions
>> directly, and then finally adding an equivalent virNftables backend
>> that can be used instead of iptables (selected manually via a
>> network.conf setting, or automatically if iptables isn't found on the
>> host).
>
> Hi,
>
> Apparently, I'm late to the discussion.
>
> I noticed that now I cannot use the bridge driver on FreeBSD as it's
> failing to initialize both iptables and nftables backends (which is
> expect).
Yeah, previously we wouldn't check if iptables was available until
someone tried to start a network that would need to use it, and would
then log an error (and just fail starting that network, but the network
driver would remain running). But now we figure out which firewall
backend to use immediately when the driver is loaded, and if we fail to
fin a workable backend we fail the entire driver init.r
How did you use the network driver before? With a <forward mode='open'/>
network? Truthfully I hadn't ever considered the case of someone using
it with only network types that didn't need firewall rules. I wonder if
there are other platforms we support that have a usable network driver
for <forward mode='open'/> (MacOS?)
>
> What would be a good way to address that? I see at least two options:
>
> 1. Add a Noop firewall driver
> 2. Implement a "real" FreeBSD driver based either on pf or ipfw (that's
> been on my TODO list forever, but I somehow got stuck on the very first
> step on choosing between pf and ipfw).
Why not both? :-)
> This obviously will take much
> more time.
>
> Maybe there are other options I'm missing.
Obviously (2) would be nicest, but I guess in the short term some
variation of (1) would be quicker.
Another possibility could be to restore the old behavior of saving the
error and only reporting it when a network requiring a firewall is
loaded, but I think I remember a discussion about this during review of
an earlier revision of the patches, and we agreed that it made the
problem easier to find if it was reported immediately and the driver
load failed.
I suppose in the long run the build-time option
firewall_backend_priority should be used to control which backends are
included in the build (rather than just which ones are checked at
runtime), so that FreeBSD could completely skip all the iptables and
nftables code (and firewalld when that's done), and Linux platforms
could skip pf and ipfw.
>
> What do you think?
I'm about to be offline for 3 weeks, but in the meantime if you'd like
to try making a NULL backend that is only an option if it's listed in
firewall_backend_priority (you'll need to remove the compile-time check
that all possible backends are accounted for - I think that is the first
of the two G_STATIC_ASSERTS at the top of virNetworkLoadDriverConfig()),
always initializes successfully in bridge_driver_conf.c if it is listed
in the options, and then in networkAddFirewallRules add a check to log
an error and fail if backend == NULL (something about attempting to
start a network type that would require firewall rules, but the system
not having any of the supported types of firewallbackend or something -
it's too late now and my brain is too fried and sleepy to think of good
wording :-)). As long as it isn't a valid selection on Linux builds that
are done with firewall_backend_priority=nftables,iptables, but *is* a
valid selection if the setting is "firewall_backend_priority=null" that
shouldn't be *too* controversial.
Later we can talk about pf and ipfw backends :-)
1
0
10 Jun '24
We currently hardcode the systemd sysusersdir, but it is desirable to be
able to choose a different location in some cases. For example, Fedora
flatpak builds change the RPM %_sysusersdir macro, but we can't currently
honour that.
Reported-by: Yaakov Selkowitz <yselkowi(a)redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
libvirt.spec.in | 1 +
meson.build | 5 +++++
meson_options.txt | 1 +
src/qemu/meson.build | 2 +-
4 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 244e5e824c..347a609add 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -1328,6 +1328,7 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
-Drunstatedir=%{_rundir} \
-Dinitconfdir=%{_sysconfdir}/sysconfig \
-Dunitdir=%{_unitdir} \
+ -Dsysusersdir=%{_sysusersdir} \
%{?arg_qemu} \
%{?arg_openvz} \
%{?arg_lxc} \
diff --git a/meson.build b/meson.build
index 295613fd93..5c7cd7ec2e 100644
--- a/meson.build
+++ b/meson.build
@@ -100,6 +100,11 @@ if unitdir == ''
unitdir = prefix / 'lib' / 'systemd' / 'system'
endif
+sysusersdir = get_option('sysusersdir')
+if sysusersdir == ''
+ sysusersdir = prefix / 'lib' / 'sysusers.d'
+endif
+
bindir = prefix / get_option('bindir')
datadir = prefix / get_option('datadir')
includedir = prefix / get_option('includedir')
diff --git a/meson_options.txt b/meson_options.txt
index a4f1dd769f..50d71427cb 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -5,6 +5,7 @@ option('system', type: 'boolean', value: false, description: 'Set install paths
option('runstatedir', type: 'string', value: '', description: 'State directory for temporary sockets, pid files, etc')
option('initconfdir', type: 'string', value: '', description: 'directory for init script configuration files')
option('unitdir', type: 'string', value: '', description: 'directory for systemd unit files')
+option('sysusersdir', type: 'string', value: '', description: 'directory for sysusers files')
# dep:tests
option('expensive_tests', type: 'feature', value: 'auto', description: 'set the default for enabling expensive tests (long timeouts)')
option('test_coverage', type: 'boolean', value: false, description: 'turn on code coverage instrumentation')
diff --git a/src/qemu/meson.build b/src/qemu/meson.build
index 907893d431..57356451e4 100644
--- a/src/qemu/meson.build
+++ b/src/qemu/meson.build
@@ -163,7 +163,7 @@ if conf.has('WITH_QEMU')
# Install the sysuser config for the qemu driver
install_data(
'libvirt-qemu.sysusers.conf',
- install_dir: prefix / 'lib' / 'sysusers.d',
+ install_dir: sysusersdir,
rename: [ 'libvirt-qemu.conf' ],
)
--
2.43.0
2
1
*** BLURB HERE ***
Michal Prívozník (5):
qemu_capabilities: Introduce QEMU_CAPS_DEVICE_ACPI_ERST
conf: Introduce pstore device
qemu: Build cmd line for pstore device
security: Set seclabels for pstore device
NEWS: Document pstore device addition
NEWS.rst | 7 +
docs/formatdomain.rst | 32 ++++
src/ch/ch_domain.c | 1 +
src/conf/domain_conf.c | 153 ++++++++++++++++++
src/conf/domain_conf.h | 19 +++
src/conf/domain_postparse.c | 1 +
src/conf/domain_validate.c | 30 ++++
src/conf/schemas/domaincommon.rng | 25 +++
src/conf/virconftypes.h | 2 +
src/hyperv/hyperv_driver.c | 1 +
src/libvirt_private.syms | 2 +
src/libxl/libxl_driver.c | 6 +
src/lxc/lxc_driver.c | 6 +
src/qemu/qemu_alias.c | 10 ++
src/qemu/qemu_capabilities.c | 4 +
src/qemu/qemu_capabilities.h | 3 +
src/qemu/qemu_command.c | 52 ++++++
src/qemu/qemu_domain.c | 3 +
src/qemu/qemu_domain_address.c | 11 ++
src/qemu/qemu_driver.c | 3 +
src/qemu/qemu_hotplug.c | 5 +
src/qemu/qemu_validate.c | 26 +++
src/security/security_dac.c | 10 ++
src/security/security_selinux.c | 9 ++
src/security/virt-aa-helper.c | 4 +
.../caps_7.0.0_aarch64+hvf.xml | 1 +
.../caps_7.0.0_aarch64.xml | 1 +
.../qemucapabilitiesdata/caps_7.0.0_ppc64.xml | 1 +
.../caps_7.0.0_x86_64.xml | 1 +
.../qemucapabilitiesdata/caps_7.1.0_ppc64.xml | 1 +
.../caps_7.1.0_x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml | 1 +
.../caps_7.2.0_x86_64+hvf.xml | 1 +
.../caps_7.2.0_x86_64.xml | 1 +
.../caps_8.0.0_x86_64.xml | 1 +
.../caps_8.1.0_x86_64.xml | 1 +
.../caps_8.2.0_aarch64.xml | 1 +
.../caps_8.2.0_armv7l.xml | 1 +
.../caps_8.2.0_loongarch64.xml | 1 +
.../caps_8.2.0_x86_64.xml | 1 +
.../caps_9.0.0_x86_64.xml | 1 +
.../caps_9.1.0_x86_64.xml | 1 +
.../pstore-acpi-erst.x86_64-latest.args | 38 +++++
.../pstore-acpi-erst.x86_64-latest.xml | 1 +
tests/qemuxmlconfdata/pstore-acpi-erst.xml | 53 ++++++
tests/qemuxmlconftest.c | 1 +
46 files changed, 535 insertions(+)
create mode 100644 tests/qemuxmlconfdata/pstore-acpi-erst.x86_64-latest.args
create mode 120000 tests/qemuxmlconfdata/pstore-acpi-erst.x86_64-latest.xml
create mode 100644 tests/qemuxmlconfdata/pstore-acpi-erst.xml
--
2.44.2
1
5
07 Jun '24
A user reported that if they set <forward mode='nat|route' dev='blah'>
starting the network would fail if the device 'blah' didn't already
exist.
This is caused by using "iif" and "oif" in nftables rules to check for
the forwarding device - these two commands work by saving the named
interface's ifindex (an unsigned integer) when the rule is added, and
comparing it to the ifindex associated with the packet's path at
runtime. This works great if the interface both 1) exists when the
rule is added, and 2) is never deleted and re-created after the rule
is added (since it would end up with a different ifindex).
When checking for the network's bridge device, it is okay for us to
use "iif" and "oif", because the bridge device is created before the
firewall rules are added, and will continue to exist until just after
the firewall rules are deleted when the network is shutdown.
But since the forward device might be deleted/re-added during the
lifetime of the network's firewall rules, we must instead us "oifname"
and "iifname" - these are much less efficient than "Xif" because they
do a string compare of the interface's name rather than just comparing
two integers (ifindex), but they don't require the interface to exist
when the rule is added, and they can properly cope with the named
interface being deleted and re-added later.
Fixes: a4f38f6ffe6a9edc001d18890ccfc3f38e72fb94
Signed-off-by: Laine Stump <laine(a)redhat.com>
---
src/network/network_nftables.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/network/network_nftables.c b/src/network/network_nftables.c
index 59ab231a06..268d1f12ca 100644
--- a/src/network/network_nftables.c
+++ b/src/network/network_nftables.c
@@ -362,7 +362,7 @@ nftablesAddForwardAllowOut(virFirewall *fw,
"iif", iface, NULL);
if (physdev && physdev[0])
- virFirewallCmdAddArgList(fw, fwCmd, "oif", physdev, NULL);
+ virFirewallCmdAddArgList(fw, fwCmd, "oifname", physdev, NULL);
virFirewallCmdAddArgList(fw, fwCmd, "counter", "accept", NULL);
@@ -398,7 +398,7 @@ nftablesAddForwardAllowRelatedIn(virFirewall *fw,
VIR_NFTABLES_FWD_IN_CHAIN, NULL);
if (physdev && physdev[0])
- virFirewallCmdAddArgList(fw, fwCmd, "iif", physdev, NULL);
+ virFirewallCmdAddArgList(fw, fwCmd, "iifname", physdev, NULL);
virFirewallCmdAddArgList(fw, fwCmd, "oif", iface,
layerStr, "daddr", networkstr,
@@ -437,7 +437,7 @@ nftablesAddForwardAllowIn(virFirewall *fw,
layerStr, "daddr", networkstr, NULL);
if (physdev && physdev[0])
- virFirewallCmdAddArgList(fw, fwCmd, "iif", physdev, NULL);
+ virFirewallCmdAddArgList(fw, fwCmd, "iifname", physdev, NULL);
virFirewallCmdAddArgList(fw, fwCmd, "oif", iface,
"counter", "accept", NULL);
@@ -566,7 +566,7 @@ nftablesAddForwardMasquerade(virFirewall *fw,
layerStr, "daddr", "!=", networkstr, NULL);
if (physdev && physdev[0])
- virFirewallCmdAddArgList(fw, fwCmd, "oif", physdev, NULL);
+ virFirewallCmdAddArgList(fw, fwCmd, "oifname", physdev, NULL);
if (protocol && protocol[0]) {
if (port->start == 0 && port->end == 0) {
@@ -634,7 +634,7 @@ nftablesAddDontMasquerade(virFirewall *fw,
VIR_NFTABLES_NAT_POSTROUTE_CHAIN, NULL);
if (physdev && physdev[0])
- virFirewallCmdAddArgList(fw, fwCmd, "oif", physdev, NULL);
+ virFirewallCmdAddArgList(fw, fwCmd, "oifname", physdev, NULL);
virFirewallCmdAddArgList(fw, fwCmd,
layerStr, "saddr", networkstr,
--
2.45.1
2
2
We currently hardcode the systemd sysusersdir, but it is desirable to be
able to choose a different location in some cases. For example, Fedora
flatpak builds change the RPM %_sysusersdir macro, but we can't currently
honour that.
Reported-by: Yaakov Selkowitz <yselkowi(a)redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
libvirt.spec.in | 1 +
meson.build | 5 +++++
meson_options.txt | 1 +
src/qemu/meson.build | 2 +-
4 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 244e5e824c..347a609add 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -1328,6 +1328,7 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
-Drunstatedir=%{_rundir} \
-Dinitconfdir=%{_sysconfdir}/sysconfig \
-Dunitdir=%{_unitdir} \
+ -Dsysusersdir=%{_sysusersdir} \
%{?arg_qemu} \
%{?arg_openvz} \
%{?arg_lxc} \
diff --git a/meson.build b/meson.build
index 295613fd93..2fc9ab3e96 100644
--- a/meson.build
+++ b/meson.build
@@ -100,6 +100,11 @@ if unitdir == ''
unitdir = prefix / 'lib' / 'systemd' / 'system'
endif
+sysusersdir = getoption('sysusersdir')
+if sysusersdir == ''
+ sysusersdir = prefix / 'lib' / 'sysusers.d'
+endif
+
bindir = prefix / get_option('bindir')
datadir = prefix / get_option('datadir')
includedir = prefix / get_option('includedir')
diff --git a/meson_options.txt b/meson_options.txt
index a4f1dd769f..50d71427cb 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -5,6 +5,7 @@ option('system', type: 'boolean', value: false, description: 'Set install paths
option('runstatedir', type: 'string', value: '', description: 'State directory for temporary sockets, pid files, etc')
option('initconfdir', type: 'string', value: '', description: 'directory for init script configuration files')
option('unitdir', type: 'string', value: '', description: 'directory for systemd unit files')
+option('sysusersdir', type: 'string', value: '', description: 'directory for sysusers files')
# dep:tests
option('expensive_tests', type: 'feature', value: 'auto', description: 'set the default for enabling expensive tests (long timeouts)')
option('test_coverage', type: 'boolean', value: false, description: 'turn on code coverage instrumentation')
diff --git a/src/qemu/meson.build b/src/qemu/meson.build
index 907893d431..57356451e4 100644
--- a/src/qemu/meson.build
+++ b/src/qemu/meson.build
@@ -163,7 +163,7 @@ if conf.has('WITH_QEMU')
# Install the sysuser config for the qemu driver
install_data(
'libvirt-qemu.sysusers.conf',
- install_dir: prefix / 'lib' / 'sysusers.d',
+ install_dir: sysusersdir,
rename: [ 'libvirt-qemu.conf' ],
)
--
2.43.0
2
1
[PATCH-for-9.1 v2 0/3] rdma: Remove RDMA subsystem and pvrdma device
by Philippe Mathieu-Daudé 07 Jun '24
by Philippe Mathieu-Daudé 07 Jun '24
07 Jun '24
Since v1:
- split in 3 (Thomas)
- justify gluster removal
Philippe Mathieu-Daudé (3):
hw/rdma: Remove pvrdma device and rdmacm-mux helper
migration: Remove RDMA protocol handling
block/gluster: Remove RDMA protocol handling
MAINTAINERS | 17 -
docs/about/deprecated.rst | 9 -
docs/about/removed-features.rst | 4 +
docs/devel/migration/main.rst | 6 -
docs/pvrdma.txt | 345 --
docs/rdma.txt | 420 --
docs/system/device-url-syntax.rst.inc | 4 +-
docs/system/loongarch/virt.rst | 2 +-
docs/system/qemu-block-drivers.rst.inc | 1 -
meson.build | 59 -
qapi/machine.json | 17 -
qapi/migration.json | 31 +-
qapi/qapi-schema.json | 1 -
qapi/rdma.json | 38 -
contrib/rdmacm-mux/rdmacm-mux.h | 61 -
hw/rdma/rdma_backend.h | 129 -
hw/rdma/rdma_backend_defs.h | 76 -
hw/rdma/rdma_rm.h | 97 -
hw/rdma/rdma_rm_defs.h | 146 -
hw/rdma/rdma_utils.h | 63 -
hw/rdma/trace.h | 1 -
hw/rdma/vmw/pvrdma.h | 144 -
hw/rdma/vmw/pvrdma_dev_ring.h | 46 -
hw/rdma/vmw/pvrdma_qp_ops.h | 28 -
hw/rdma/vmw/trace.h | 1 -
include/hw/rdma/rdma.h | 37 -
include/monitor/hmp.h | 1 -
.../infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h | 685 ---
.../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 348 --
.../standard-headers/rdma/vmw_pvrdma-abi.h | 310 --
migration/migration-stats.h | 6 +-
migration/migration.h | 9 -
migration/options.h | 2 -
migration/rdma.h | 69 -
block/gluster.c | 39 -
contrib/rdmacm-mux/main.c | 831 ----
hw/core/machine-qmp-cmds.c | 32 -
hw/rdma/rdma.c | 30 -
hw/rdma/rdma_backend.c | 1401 ------
hw/rdma/rdma_rm.c | 812 ----
hw/rdma/rdma_utils.c | 126 -
hw/rdma/vmw/pvrdma_cmd.c | 815 ----
hw/rdma/vmw/pvrdma_dev_ring.c | 141 -
hw/rdma/vmw/pvrdma_main.c | 735 ---
hw/rdma/vmw/pvrdma_qp_ops.c | 298 --
migration/migration-stats.c | 5 +-
migration/migration.c | 31 -
migration/options.c | 16 -
migration/qemu-file.c | 1 -
migration/ram.c | 86 +-
migration/rdma.c | 4184 -----------------
migration/savevm.c | 2 +-
monitor/qmp-cmds.c | 1 -
Kconfig.host | 3 -
contrib/rdmacm-mux/meson.build | 7 -
hmp-commands-info.hx | 13 -
hw/Kconfig | 1 -
hw/meson.build | 1 -
hw/rdma/Kconfig | 3 -
hw/rdma/meson.build | 12 -
hw/rdma/trace-events | 31 -
hw/rdma/vmw/trace-events | 17 -
meson_options.txt | 4 -
migration/meson.build | 1 -
migration/trace-events | 68 +-
qapi/meson.build | 1 -
qemu-options.hx | 6 -
.../org.centos/stream/8/build-environment.yml | 1 -
.../ci/org.centos/stream/8/x86_64/configure | 3 -
scripts/ci/setup/build-environment.yml | 4 -
scripts/coverity-scan/run-coverity-scan | 2 +-
scripts/meson-buildoptions.sh | 6 -
scripts/update-linux-headers.sh | 27 -
tests/lcitool/projects/qemu.yml | 3 -
tests/migration/guestperf/engine.py | 4 +-
75 files changed, 20 insertions(+), 12997 deletions(-)
delete mode 100644 docs/pvrdma.txt
delete mode 100644 docs/rdma.txt
delete mode 100644 qapi/rdma.json
delete mode 100644 contrib/rdmacm-mux/rdmacm-mux.h
delete mode 100644 hw/rdma/rdma_backend.h
delete mode 100644 hw/rdma/rdma_backend_defs.h
delete mode 100644 hw/rdma/rdma_rm.h
delete mode 100644 hw/rdma/rdma_rm_defs.h
delete mode 100644 hw/rdma/rdma_utils.h
delete mode 100644 hw/rdma/trace.h
delete mode 100644 hw/rdma/vmw/pvrdma.h
delete mode 100644 hw/rdma/vmw/pvrdma_dev_ring.h
delete mode 100644 hw/rdma/vmw/pvrdma_qp_ops.h
delete mode 100644 hw/rdma/vmw/trace.h
delete mode 100644 include/hw/rdma/rdma.h
delete mode 100644 include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h
delete mode 100644 include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h
delete mode 100644 include/standard-headers/rdma/vmw_pvrdma-abi.h
delete mode 100644 migration/rdma.h
delete mode 100644 contrib/rdmacm-mux/main.c
delete mode 100644 hw/rdma/rdma.c
delete mode 100644 hw/rdma/rdma_backend.c
delete mode 100644 hw/rdma/rdma_rm.c
delete mode 100644 hw/rdma/rdma_utils.c
delete mode 100644 hw/rdma/vmw/pvrdma_cmd.c
delete mode 100644 hw/rdma/vmw/pvrdma_dev_ring.c
delete mode 100644 hw/rdma/vmw/pvrdma_main.c
delete mode 100644 hw/rdma/vmw/pvrdma_qp_ops.c
delete mode 100644 migration/rdma.c
delete mode 100644 contrib/rdmacm-mux/meson.build
delete mode 100644 hw/rdma/Kconfig
delete mode 100644 hw/rdma/meson.build
delete mode 100644 hw/rdma/trace-events
delete mode 100644 hw/rdma/vmw/trace-events
--
2.41.0
17
80
We currently hardcode the systemd unitdir, but it is desirable to be
able to choose a different location in some cases. For examples, Fedora
flatpak builds change the RPM %_unitdir macro, but we can't currently
honour that.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
libvirt.spec.in | 1 +
meson.build | 5 +++++
meson_options.txt | 1 +
src/meson.build | 8 +++-----
4 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 1d3240ee6f..0a121515b9 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -1329,6 +1329,7 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
%meson \
-Drunstatedir=%{_rundir} \
-Dinitconfdir=%{_sysconfdir}/sysconfig \
+ -Dunitdir=%{_unitdir} \
%{?arg_qemu} \
%{?arg_openvz} \
%{?arg_lxc} \
diff --git a/meson.build b/meson.build
index 62e49be37d..295613fd93 100644
--- a/meson.build
+++ b/meson.build
@@ -95,6 +95,11 @@ if initconfdir == ''
endif
endif
+unitdir = get_option('unitdir')
+if unitdir == ''
+ unitdir = prefix / 'lib' / 'systemd' / 'system'
+endif
+
bindir = prefix / get_option('bindir')
datadir = prefix / get_option('datadir')
includedir = prefix / get_option('includedir')
diff --git a/meson_options.txt b/meson_options.txt
index cdc8687795..a4f1dd769f 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -4,6 +4,7 @@ option('packager_version', type: 'string', value: '', description: 'Extra packag
option('system', type: 'boolean', value: false, description: 'Set install paths to system ones')
option('runstatedir', type: 'string', value: '', description: 'State directory for temporary sockets, pid files, etc')
option('initconfdir', type: 'string', value: '', description: 'directory for init script configuration files')
+option('unitdir', type: 'string', value: '', description: 'directory for systemd unit files')
# dep:tests
option('expensive_tests', type: 'feature', value: 'auto', description: 'set the default for enabling expensive tests (long timeouts)')
option('test_coverage', type: 'boolean', value: false, description: 'turn on code coverage instrumentation')
diff --git a/src/meson.build b/src/meson.build
index dd2682ec19..8cce42c7ad 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -812,11 +812,9 @@ endforeach
if conf.has('WITH_LIBVIRTD')
# Generate systemd service and socket unit files
if init_script == 'systemd'
- systemd_unit_dir = prefix / 'lib' / 'systemd' / 'system'
-
install_data(
guest_unit_files,
- install_dir: systemd_unit_dir,
+ install_dir: unitdir,
)
if conf.has('WITH_POLKIT')
@@ -855,7 +853,7 @@ if conf.has('WITH_LIBVIRTD')
output: service_out,
configuration: unit_conf,
install: true,
- install_dir: systemd_unit_dir,
+ install_dir: unitdir,
)
foreach socket : unit.get('sockets', [ 'main', 'ro', 'admin' ])
@@ -881,7 +879,7 @@ if conf.has('WITH_LIBVIRTD')
output: socket_out,
configuration: unit_conf,
install: true,
- install_dir: systemd_unit_dir,
+ install_dir: unitdir,
)
endforeach
endforeach
--
2.43.0
2
1
We link to libsasl2.so, so get a dep on cyrus-sasl-libs automatically.
The dep on cyrus-sasl-gssapi gets us the mechanism that matches our
default config.
The 'cyrus-sasl' package merely contains some man pages and the
saslauthd daemon, which is not required by libvirt. This dep appears
to have been redundant since we first added in
commit 1b1d647439059b7e10fb94e1ade227fb695d7110
Author: Daniel P. Berrangé <berrange(a)redhat.com>
Date: Wed Dec 5 15:24:15 2007 +0000
Initial integration of SASL authentication, working for Kerberos only
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
libvirt.spec.in | 2 --
1 file changed, 2 deletions(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 1d3240ee6f..343015ad1d 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -1055,8 +1055,6 @@ with some QEMU specific features of libvirt.
%package libs
Summary: Client side libraries
-# So remote clients can access libvirt over SSH tunnel
-Requires: cyrus-sasl
# Needed by default sasl.conf - no onerous extra deps, since
# 100's of other things on a system already pull in krb5-libs
Requires: cyrus-sasl-gssapi
--
2.43.0
2
1
06 Jun '24
On Thu, Jun 06, 2024 at 16:17:41 +0530, Rayhan Faizel wrote:
> Hi,
Hi, please *always* keep replies on-list (use reply-all).
I've re-added the mailing list again.
>
> On Thu, Jun 6, 2024 at 4:12 PM Peter Krempa <pkrempa(a)redhat.com> wrote:
> >
> > On Thu, Jun 06, 2024 at 15:45:16 +0530, Rayhan Faizel wrote:
> > > An iSCSI device with zero hosts will result in a segmentation fault. This patch
> > > adds a check for the number of hosts, which must be one in the case of iSCSI.
> > >
> > > Minimal reproducing XML:
> > >
> > > <domain type='qemu'>
> > > <name>MyGuest</name>
> > > <uuid>4dea22b3-1d52-d8f3-2516-782e98ab3fa0</uuid>
> > > <os>
> > > <type arch='x86_64'>hvm</type>
> > > </os>
> > > <memory>4096</memory>
> > > <devices>
> > > <disk type='network'>
> > > <source name='dummy' protocol='iscsi'/>
> > > <target dev='vda'/>
> > > </disk>
> > > </devices>
> > > </domain>
> >
> > Please transform this bit into a test case in qemuxmlconftest to see
> > that it's properly rejected.
> >
>
> I did try to add a testcase but the schema tests fail on this
> particular XML because it expects one or more <hosts>. Is there a way
> to exclude schema validation for certain testcases or should I just
> modify the schema and change it from oneOrMore to zeroOrMore?
Schema test result can be inverted by naming the file with
'-invalid.xml' suffix. In such case the test will require that the XML
has invalid schema. Additionally it's also possible by adding an
exception in virschematest, but we have more than a few tests with the
suffix in qemuxmlconftest.
1
0
06 Jun '24
An iSCSI device with zero hosts will result in a segmentation fault. This patch
adds a check for the number of hosts, which must be one in the case of iSCSI.
Minimal reproducing XML:
<domain type='qemu'>
<name>MyGuest</name>
<uuid>4dea22b3-1d52-d8f3-2516-782e98ab3fa0</uuid>
<os>
<type arch='x86_64'>hvm</type>
</os>
<memory>4096</memory>
<devices>
<disk type='network'>
<source name='dummy' protocol='iscsi'/>
<target dev='vda'/>
</disk>
</devices>
</domain>
Signed-off-by: Rayhan Faizel <rayhan.faizel(a)gmail.com>
---
This crashing XML was detected by the WIP fuzzer which is being developed
as part of Google Summer of Code 2024.
src/qemu/qemu_block.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index 738b72d7ea..d6cdf521c4 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -602,6 +602,12 @@ qemuBlockStorageSourceGetISCSIProps(virStorageSource *src,
* }
*/
+ if (src->nhosts != 1) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("iSCSI protocol accepts only one host"));
+ return NULL;
+ }
+
target = g_strdup(src->path);
/* Separate the target and lun */
--
2.34.1
2
1
06 Jun '24
I'm working on something that's calling qemuMonitorCreateObjectProps()
and was getting random errors only to find out I was missing NULL
sentinel. This sparked me to look at other functions that might be
missing the G_GNUC_NULL_TERMINATED attribute too and found some.
Michal Prívozník (2):
lib: Annotate more function as NULL terminated
qemumonitortestutils: Fix G_GNUC_PRINTF annotation of
qemuMonitorTestAddErrorResponse()
src/qemu/qemu_monitor.h | 3 ++-
src/qemu/qemu_monitor_json.c | 2 +-
tests/qemumigrationcookiexmltest.c | 2 +-
tests/qemumonitortestutils.c | 2 +-
tests/qemumonitortestutils.h | 3 ++-
tests/testutils.h | 3 ++-
tests/testutilsqemuschema.h | 3 ++-
tools/vsh.c | 2 +-
8 files changed, 12 insertions(+), 8 deletions(-)
--
2.44.1
2
3
Hello,
hope it works in German. Need some help.
My problem: Windows 10 won't boot anymore, automatic
repair doesn't work either. Is there a way to repair Win10 and
how?
Best regards
Gilbert Adam
1
0
05 Jun '24
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
libvirt.spec.in | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 0f3c882f05..1d3240ee6f 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -1485,8 +1485,9 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
-Dtests=disabled \
-Dudev=disabled \
-Dwireshark_dissector=disabled \
- -Dyajl=disabled
- %mingw_ninja
+ -Dyajl=disabled \
+ %{?enable_werror}
+%mingw_ninja
%endif
%install
--
2.43.0
2
1
The %meson_test macro expands to have a newline at the start, so
rather than expanding to
VIR_TEST_DEBUG=1 meson test ....
we get
VIR_TEST_DEBUG=1
meson test ....
which has no effect, since VIR_TEST_DEBUG isn't exported.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
libvirt.spec.in | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 5ca7b95e6c..0f3c882f05 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -1592,7 +1592,8 @@ rm -rf $RPM_BUILD_ROOT%{mingw64_libexecdir}/libvirt-guests.sh
%if %{with_native}
# Building on slow archs, like emulated s390x in Fedora copr, requires
# raising the test timeout
-VIR_TEST_DEBUG=1 %meson_test --no-suite syntax-check --timeout-multiplier 10
+export VIR_TEST_DEBUG=1
+%meson_test --no-suite syntax-check --timeout-multiplier 10
%endif
%define libvirt_rpmstatedir %{_localstatedir}/lib/rpm-state/libvirt
--
2.45.1
2
1
05 Jun '24
The udevInterfaceGetXMLDesc method takes a reference on the udev
driver as its first action. If the virCheckFlags() condition
fails, however, this reference is never released.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
src/interface/interface_backend_udev.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/interface/interface_backend_udev.c b/src/interface/interface_backend_udev.c
index fdf11a8318..e1a50389c9 100644
--- a/src/interface/interface_backend_udev.c
+++ b/src/interface/interface_backend_udev.c
@@ -1027,12 +1027,14 @@ static char *
udevInterfaceGetXMLDesc(virInterfacePtr ifinfo,
unsigned int flags)
{
- struct udev *udev = udev_ref(driver->udev);
+ struct udev *udev = NULL;
g_autoptr(virInterfaceDef) ifacedef = NULL;
char *xmlstr = NULL;
virCheckFlags(VIR_INTERFACE_XML_INACTIVE, NULL);
+ udev = udev_ref(driver->udev);
+
/* Recursively build up the interface XML based on the requested
* interface name
*/
--
2.45.1
2
1
Andrea Bolognani (3):
tests: Add TPM coverage to default-models tests
tests: Delete some redundant test cases
qemu: Only allow TPM 2.0 for RISC-V guests
src/qemu/qemu_domain.c | 1 +
src/qemu/qemu_validate.c | 10 +--
...aarch64-tpm-wrong-model.aarch64-latest.err | 2 +-
.../aarch64-tpm.aarch64-latest.args | 34 ---------
.../aarch64-tpm.aarch64-latest.xml | 29 --------
tests/qemuxmlconfdata/aarch64-tpm.xml | 15 ----
...ault-models.aarch64-latest.abi-update.args | 3 +
...fault-models.aarch64-latest.abi-update.xml | 3 +
...64-virt-default-models.aarch64-latest.args | 3 +
...h64-virt-default-models.aarch64-latest.xml | 3 +
.../aarch64-virt-default-models.xml | 3 +
.../loongarch64-virt-default-models.xml | 1 +
...efault-models.ppc64-latest.abi-update.args | 3 +
...default-models.ppc64-latest.abi-update.xml | 4 ++
...4-pseries-default-models.ppc64-latest.args | 3 +
...64-pseries-default-models.ppc64-latest.xml | 4 ++
.../ppc64-pseries-default-models.xml | 3 +
...ault-models.riscv64-latest.abi-update.args | 3 +
...fault-models.riscv64-latest.abi-update.xml | 3 +
...64-virt-default-models.riscv64-latest.args | 3 +
...v64-virt-default-models.riscv64-latest.xml | 3 +
.../riscv64-virt-default-models.xml | 3 +
.../s390x-ccw-default-models.xml | 1 +
.../tpm-emulator-spapr.ppc64-latest.args | 45 ------------
.../tpm-emulator-spapr.ppc64-latest.xml | 1 -
tests/qemuxmlconfdata/tpm-emulator-spapr.xml | 70 -------------------
...fault-models.x86_64-latest.abi-update.args | 3 +
...efault-models.x86_64-latest.abi-update.xml | 3 +
...86_64-pc-default-models.x86_64-latest.args | 3 +
...x86_64-pc-default-models.x86_64-latest.xml | 3 +
.../x86_64-pc-default-models.xml | 3 +
...fault-models.x86_64-latest.abi-update.args | 3 +
...efault-models.x86_64-latest.abi-update.xml | 3 +
...6_64-q35-default-models.x86_64-latest.args | 3 +
...86_64-q35-default-models.x86_64-latest.xml | 3 +
.../x86_64-q35-default-models.xml | 3 +
tests/qemuxmlconftest.c | 2 -
37 files changed, 87 insertions(+), 201 deletions(-)
delete mode 100644 tests/qemuxmlconfdata/aarch64-tpm.aarch64-latest.args
delete mode 100644 tests/qemuxmlconfdata/aarch64-tpm.aarch64-latest.xml
delete mode 100644 tests/qemuxmlconfdata/aarch64-tpm.xml
delete mode 100644 tests/qemuxmlconfdata/tpm-emulator-spapr.ppc64-latest.args
delete mode 120000 tests/qemuxmlconfdata/tpm-emulator-spapr.ppc64-latest.xml
delete mode 100644 tests/qemuxmlconfdata/tpm-emulator-spapr.xml
--
2.45.1
3
9
[PATCH] qga: Remove deprecated 'blacklist' argument / config key
by Philippe Mathieu-Daudé 03 Jun '24
by Philippe Mathieu-Daudé 03 Jun '24
03 Jun '24
The 'blacklist' argument / config key are deprecated since commi
582a098e6c ("qga: Replace 'blacklist' command line and config file
options by 'block-rpcs'"), time to remove them.
Signed-off-by: Philippe Mathieu-Daudé <philmd(a)linaro.org>
---
docs/about/deprecated.rst | 18 ------------------
docs/about/removed-features.rst | 18 ++++++++++++++++++
qga/main.c | 6 ------
3 files changed, 18 insertions(+), 24 deletions(-)
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 40585ca7d5..a32e0e2564 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -478,24 +478,6 @@ versions, aliases will point to newer CPU model versions
depending on the machine type, so management software must
resolve CPU model aliases before starting a virtual machine.
-QEMU guest agent
-----------------
-
-``--blacklist`` command line option (since 7.2)
-'''''''''''''''''''''''''''''''''''''''''''''''
-
-``--blacklist`` has been replaced by ``--block-rpcs`` (which is a better
-wording for what this option does). The short form ``-b`` still stays
-the same and thus is the preferred way for scripts that should run with
-both, older and future versions of QEMU.
-
-``blacklist`` config file option (since 7.2)
-''''''''''''''''''''''''''''''''''''''''''''
-
-The ``blacklist`` config file option has been renamed to ``block-rpcs``
-(to be in sync with the renaming of the corresponding command line
-option).
-
Migration
---------
diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst
index fba0cfb0b0..deca066b21 100644
--- a/docs/about/removed-features.rst
+++ b/docs/about/removed-features.rst
@@ -1129,4 +1129,22 @@ stable for some time and is now widely used.
The command line and feature set is very close to the removed
C implementation.
+QEMU guest agent
+----------------
+
+``--blacklist`` command line option (removed in 9.1)
+''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+``--blacklist`` has been replaced by ``--block-rpcs`` (which is a better
+wording for what this option does). The short form ``-b`` still stays
+the same and thus is the preferred way for scripts that should run with
+both, older and future versions of QEMU.
+
+``blacklist`` config file option (removed in 9.1)
+'''''''''''''''''''''''''''''''''''''''''''''''''
+
+The ``blacklist`` config file option has been renamed to ``block-rpcs``
+(to be in sync with the renaming of the corresponding command line
+option).
+
.. _Intel discontinuance notification: https://www.intel.com/content/www/us/en/content-details/781327/intel-is-dis…
diff --git a/qga/main.c b/qga/main.c
index bdf5344584..f4d5f15bb3 100644
--- a/qga/main.c
+++ b/qga/main.c
@@ -1071,11 +1071,6 @@ static void config_load(GAConfig *config)
g_key_file_get_boolean(keyfile, "general", "retry-path", &gerr);
}
- if (g_key_file_has_key(keyfile, "general", "blacklist", NULL)) {
- g_warning("config using deprecated 'blacklist' key, should be replaced"
- " with the 'block-rpcs' key.");
- blockrpcs_key = "blacklist";
- }
if (g_key_file_has_key(keyfile, "general", blockrpcs_key, NULL)) {
config->bliststr =
g_key_file_get_string(keyfile, "general", blockrpcs_key, &gerr);
@@ -1190,7 +1185,6 @@ static void config_parse(GAConfig *config, int argc, char **argv)
{ "path", 1, NULL, 'p' },
{ "daemonize", 0, NULL, 'd' },
{ "block-rpcs", 1, NULL, 'b' },
- { "blacklist", 1, NULL, 'b' }, /* deprecated alias for 'block-rpcs' */
{ "allow-rpcs", 1, NULL, 'a' },
#ifdef _WIN32
{ "service", 1, NULL, 's' },
--
2.41.0
2
3
Remove MEM_UNPLUG_ERROR and 'vcpu' field in TRACE events,
all deprecated since long enough.
Philippe Mathieu-Daudé (2):
hw/acpi: Remove the deprecated QAPI MEM_UNPLUG_ERROR event
trace: Remove deprecated 'vcpu' field from QMP trace events
docs/about/deprecated.rst | 16 ----------------
docs/about/removed-features.rst | 15 +++++++++++++++
qapi/machine.json | 28 ----------------------------
qapi/trace.json | 27 +++------------------------
hw/acpi/memory_hotplug.c | 8 --------
hw/ppc/spapr.c | 11 +----------
trace/qmp.c | 2 --
trace/trace-hmp-cmds.c | 4 ++--
8 files changed, 21 insertions(+), 90 deletions(-)
--
2.41.0
4
6
03 Jun '24
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
libvirt.spec.in | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 4381dbe30c..5ca7b95e6c 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -205,6 +205,18 @@
%define with_modular_daemons 1
%endif
+# Prefer nftables for future OS releases but keep using iptables
+# for existing ones
+%if 0%{?rhel} >= 10 || 0%{?fedora} >= 41
+ %define prefer_nftables 1
+ %define firewall_backend_priority nftables,iptables
+%else
+ %define prefer_nftables 0
+ %define firewall_backend_priority iptables,nftables
+%endif
+
+
+
# Force QEMU to run as non-root
%define qemu_user qemu
%define qemu_group qemu
@@ -592,7 +604,7 @@ Summary: Network driver plugin for the libvirtd daemon
Requires: libvirt-daemon-common = %{version}-%{release}
Requires: libvirt-libs = %{version}-%{release}
Requires: dnsmasq >= 2.41
- %if 0%{?rhel} >= 10 || 0%{?fedora} >= 41
+ %if %{prefer_nftables}
Requires: nftables
%else
Requires: iptables
@@ -1387,7 +1399,7 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
%{?enable_werror} \
-Dexpensive_tests=enabled \
-Dinit_script=systemd \
- -Dfirewall_backend_priority=nftables,iptables \
+ -Dfirewall_backend_priority=%{firewall_backend_priority} \
-Ddocs=enabled \
-Dtests=enabled \
-Drpath=disabled \
--
2.45.1
2
1
03 Jun '24
Test pipeline: https://gitlab.com/abologna/libvirt/-/pipelines/1308917840
See 1/3 for details.
Andrea Bolognani (3):
meson: Improve default firewall backend configuration
meson: Include firewall backend selection in summary
rpm: Configure firewall backends explicitly
libvirt.spec.in | 1 +
meson.build | 21 ++++++++++++++-------
meson_options.txt | 3 +--
src/network/bridge_driver_conf.c | 6 +++++-
src/network/meson.build | 6 ++++--
src/network/network.conf.in | 13 +++++++------
6 files changed, 32 insertions(+), 18 deletions(-)
--
2.45.1
4
14
The 10.4.0 release of both libvirt and libvirt-python is tagged and
signed tarballs are available at
https://download.libvirt.org/
https://download.libvirt.org/python/
Thanks everybody who helped with this release by sending patches,
reviewing, testing, or providing feedback. Your work is greatly
appreciated.
* New features
* qemu: Support for ras feature for virt machine type
It is now possible to set on/off ``ras`` feature in the domain XML for virt
(Arm) machine type as ``<ras state='on'/>``.
* SSH proxy for VM
Libvirt now installs a binary helper that allows connecting to QEMU domains
via SSH using the following scheme: ``ssh user@qemu/virtualMachine``.
* qemu: Support for ``virtio`` sound model
Sound devices can now be configured to use the virtio model with
``<sound model='virtio'/>``. This model is available from QEMU 8.2.0
onwards.
* network: use nftables to setup virtual network firewall rules
The network driver can now use nftables rules for the virtual
network firewalls, rather than iptables. With the standard build
options, nftables is preferred over iptables (with fallback to
iptables if nftables isn't installed), but this can be modified at
build time, or at runtime via the firewall_backend setting in
network.conf. (NB: the nwfilter driver still uses
ebtables/iptables).
* Improvements
* qemu: add zstd to supported compression formats
Extend the list of supported formats of QEMU save image by adding zstd
compression.
* qemu: Implement support for hotplugging evdev input devices
As of this release, hotplug and hotunplug of evdev ``<input/>`` devices is
supported.
* Bug fixes
* virsh/virt-admin: Fix ``--help`` option for all commands
A bug introduced in `v10.3.0 (2024-05-02)`_ caused that the attempt to print
help for any command by using the ``--help`` option in ``virsh`` and
``virt-admin`` would print::
$ virsh list --help
error: command 'list' doesn't support option --help
instead of the help output. A workaround for the affected version is to use
the help command::
$ virsh help list
* qemu: Fix ``virsh save`` and migration when storage in question is root_squashed NFS
Attempting to save a VM to a root_squash NFS mount or migrating with disks
hosted on such mount could, in some scenarios, result in error stating::
'Unknown error 255'
The bug was introduced in `v10.1.0 (2024-03-01)`_.
* qemu: Don't set affinity for isolcpus unless explicitly requested
When starting a domain, by default libvirt sets affinity of QEMU process to
all online CPUs. This also included isolated CPUs (``isolcpus=``) which is
wrong. As of this release, isolated CPUs are left untouched, unless
explicitly configured in domain XML.
* qemu_hotplug: Properly assign USB address to hotplugged usb-net device
Previously, the network device hotplug logic would try to ensure only CCW
or PCI addresses. With recent support for the usb-net model, USB addresses
for usb-net network devices are assigned automatically.
* qemu: Fix hotplug of ``virtiofs`` filesystem device with ``<boot order=`` set
The bug was introduced in `v10.3.0 (2024-05-02)`_ when attempting to reject
unsupported configurations. During hotplug the addresses are
assigned after validation and thus errorneously reject valid configs.
Enjoy.
Jirka
1
0
Fixes: 296b6badc10c43480ec51eb2c73a1c8b5c8fb15e
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
Trivial.
NEWS.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/NEWS.rst b/NEWS.rst
index 4dd7530f0c..b3ad60d7c1 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -93,7 +93,7 @@ v10.4.0 (unreleased)
or PCI addresses. With recent support for the usb-net model, USB addresses
for usb-net network devices are assigned automatically.
- * qemu: Fix hotplug of ``virtiofs`` filesystem device with ``<boot order=`` set
+ * qemu: Fix hotplug of ``virtiofs`` filesystem device with ``<boot order=`` set
The bug was introduced in `v10.3.0 (2024-05-02)`_ when attempting to reject
unsupported configurations. During hotplug the addresses are
--
2.45.1
1
0
When the 'pages' job is configured to run 'on_success' it's skipped if
any other pipeline fails. This is bad in cases such as if an external
service runs out of CI minutes as the web stops being updated.
Since the 'artifacts' of the 'website_job' are generated only if that
phase succeeds this will update the web when the web part is buildable.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
Note that it's upnpleasant to test the pages deployment stuff separately
as various hacks are needed to do that successfully. Let's test this one
in production.
.gitlab-ci.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7f80896e6e..d9d8b1e3cd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -96,7 +96,7 @@ pages:
- website_job
rules:
- if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- when: on_success
+ when: always
- when: never
artifacts:
expose_as: 'pages'
--
2.45.1
2
1
Hi All,
I vaguely recall a discussion about $subject, but can't find it now. Perhaps
buried in another thread. The topic has been raised internally again, and I'd
like to gauge the community's interest in automatically adding the necessary
devices/config when user has specified vcpus > 255.
The comparison for prior art is a bit of a stretch, but we e.g. add <audio
type='spice'/> when spice graphics is configured. I know libvirt has generally
tried to avoid policy decisions, but it's not clear to me where we stand with
cases such as this, where every x86 VM with > 255 vcpus needs a similarly
configured iommu.
Regards,
Jim
7
9
[PATCH 0/4] qemu: Fix broken check rejecting virtiofs hotplug with 'bootindex' set
by Peter Krempa 31 May '24
by Peter Krempa 31 May '24
31 May '24
See 3/4
Peter Krempa (4):
syms: Properly export 'virDomainDeviceDefValidate'
qemu: hotplug: Validate definition of 'FS' device after address
allocation
qemu: validate: Fix check for unsupported FS-device bootindex use on
un-assigned addresses
NEWS: Mention fix for broken 'fs' device bootindex support check
NEWS.rst | 6 ++++++
src/libvirt_private.syms | 1 +
src/qemu/qemu_hotplug.c | 4 ++++
src/qemu/qemu_validate.c | 5 ++++-
4 files changed, 15 insertions(+), 1 deletion(-)
--
2.45.1
2
5
I have just tagged v10.4.0-rc1 in the repository and pushed signed
tarballs to https://download.libvirt.org/
Please give the release candidate some testing and in case you find a
serious issue which should have a fix in the upcoming release, feel
free to reply to this thread to make sure the issue is more visible.
If you have not done so yet, please update NEWS.rst to document any
significant change you made since the last release.
Thanks,
Jirka
1
1
When removing rotated log files, their name is matched against a
regex (@log_regex) and if they contain '.N' suffix the 'N' is
then parsed into an integer. Well, due to a bug in
virLogCleanerParseFilename() this is not how the code works. If
the suffix isn't found then g_match_info_fetch() returns an empty
string instead of NULL which then makes str2int parsing fail.
Just check for this case before parsing the string.
Based on the original patch sent by David.
Reported-by: David Negreira <david.negreira(a)canonical.com>
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
The original patch was posted here:
https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/ENXJ…
In the thread you can see me suggesting this alternative approach and
David confirming it works. Therefore, I'd like to get this in before the
release.
src/logging/log_cleaner.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/logging/log_cleaner.c b/src/logging/log_cleaner.c
index 4ee91843aa..4efcbc18e4 100644
--- a/src/logging/log_cleaner.c
+++ b/src/logging/log_cleaner.c
@@ -82,10 +82,8 @@ virLogCleanerParseFilename(const char *path,
*rotated_index = 0;
rotated_index_str = g_match_info_fetch(matchInfo, 3);
- if (!rotated_index_str)
- return chain_prefix;
-
- if (virStrToLong_i(rotated_index_str, NULL, 10, rotated_index) < 0) {
+ if (rotated_index_str && STRNEQ(rotated_index_str, "") &&
+ virStrToLong_i(rotated_index_str, NULL, 10, rotated_index) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to parse rotated index from '%1$s'"),
rotated_index_str);
--
2.44.1
2
1
30 May '24
These are either features/bugfixes I've worked on or
participated in.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
NEWS.rst | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/NEWS.rst b/NEWS.rst
index 14505116b1..57e8f0d0c3 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -45,6 +45,16 @@ v10.4.0 (unreleased)
* **Improvements**
+ * qemu: add zstd to supported compression formats
+
+ Extend the list of supported formats of QEMU save image by adding zstd
+ compression.
+
+ * qemu: Implement support for hotplugging evdev input devices
+
+ As of this release, hotplug and hotunplug of evdev ``<input/>`` devices is
+ supported.
+
* **Bug fixes**
* virsh/virt-admin: Fix ``--help`` option for all commands
@@ -70,6 +80,19 @@ v10.4.0 (unreleased)
The bug was introduced in `v10.1.0 (2024-03-01)`_.
+ * qemu: Don't set affinity for isolcpus unless explicitly requested
+
+ When starting a domain, by default libvirt sets affinity of QEMU process to
+ all online CPUs. This also included isolated CPUs (``isolcpus=``) which is
+ wrong. As of this release, isolated CPUs are left untouched, unless
+ explicitly configured in domain XML.
+
+ * qemu_hotplug: Properly assign USB address to hotplugged usb-net device
+
+ Previously, the network device hotplug logic would try to ensure only CCW
+ or PCI addresses. With recent support for the usb-net model, USB addresses
+ for usb-net network devices are assigned automatically.
+
v10.3.0 (2024-05-02)
====================
--
2.44.1
2
1
30 May '24
In one of my recent commits, I've introduced
virDomainInterfaceClearQoS() which is a helper that either calls
virNetDevBandwidthClear() ('tc' implementation) or
virNetDevOpenvswitchInterfaceClearQos() (for ovs ifaces). But I
made a micro optimization which leads to a bug: the function
checks whether passed iface has any QoS set and returns early if
it has none. In majority of cases this is right thing to do, but
when removing QoS on virDomainUpdateDeviceFlags() this is
problematic. The new definition (passed as argument to
virDomainInterfaceClearQoS()) contains no QoS (because user
requested its removal) and thus instead of removing the old QoS
setting nothing is done.
Fortunately, the fix is simple - pass olddev which contains the
old QoS setting.
Fixes: 812a146dfe784315edece43d09f8d9e432f8230e
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/qemu/qemu_hotplug.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 4739beead8..c98b0b5d52 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -4071,7 +4071,7 @@ qemuDomainChangeNet(virQEMUDriver *driver,
goto cleanup;
}
} else {
- if (virDomainInterfaceClearQoS(vm->def, newdev) < 0)
+ if (virDomainInterfaceClearQoS(vm->def, olddev) < 0)
goto cleanup;
}
--
2.44.1
2
1
[PATCH v3 0/5] qemu: Introduce shared_filesystems configuration option
by Andrea Bolognani 29 May '24
by Andrea Bolognani 29 May '24
29 May '24
The need to have something like this in the first place is driven by
KubeVirt (see [1] and [2]). A draft version of this series has been
integrated into KubeVirt and it has been confirmed that it was
effective in removing the need to use LD_PRELOAD hacks in the storage
provider.
Changes from [v2]:
* added canonicalization for user-provided paths;
* fixed compilation issues when AppArmor support is enabled.
Changes from [v1]:
* documented more explicitly that the newly introduced option is
intended for very specific scenarios and not general usage; as
part of this, the NEWS update has been dropped too;
* made a few tweaks and addressed a few oversight based on review
feedback;
* several preparatory cleanup patches have been pushed.
Changes from [v0]:
* reworked approach.
[v2] https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/XPCP…
[v1] https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/XEIS…
[v0] https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/MMKV…
[1] https://issues.redhat.com/browse/CNV-34322
[2] https://issues.redhat.com/browse/CNV-39370
Andrea Bolognani (5):
security: Fix alignment
qemu: Introduce shared_filesystems configuration option
qemu: Propagate shared_filesystems
utils: Use overrides in virFileIsSharedFS()
qemu: Always set labels for TPM state
src/lxc/lxc_controller.c | 3 +-
src/lxc/lxc_driver.c | 2 +-
src/lxc/lxc_process.c | 4 +-
src/qemu/libvirtd_qemu.aug | 3 ++
src/qemu/qemu.conf.in | 23 ++++++++
src/qemu/qemu_conf.c | 31 +++++++++++
src/qemu/qemu_conf.h | 2 +
src/qemu/qemu_domain.c | 7 ++-
src/qemu/qemu_extdevice.c | 2 +-
src/qemu/qemu_migration.c | 23 ++++----
src/qemu/qemu_security.c | 85 +++++++++++++++++++++++-------
src/qemu/qemu_tpm.c | 38 +++++++------
src/qemu/qemu_tpm.h | 10 ++--
src/qemu/test_libvirtd_qemu.aug.in | 5 ++
src/security/security_apparmor.c | 8 ++-
src/security/security_dac.c | 47 +++++++++++++----
src/security/security_driver.h | 8 ++-
src/security/security_manager.c | 33 +++++++++---
src/security/security_manager.h | 9 +++-
src/security/security_nop.c | 5 ++
src/security/security_selinux.c | 56 +++++++++++++++-----
src/security/security_stack.c | 32 ++++++++---
src/util/virfile.c | 53 +++++++++++++++++--
src/util/virfile.h | 3 +-
tests/securityselinuxlabeltest.c | 2 +-
tests/virfiletest.c | 2 +-
26 files changed, 389 insertions(+), 107 deletions(-)
--
2.44.0
3
20
[libvirt PATCH] qemu_snapshot: fix memory leak when reverting external snapshot
by Pavel Hrdina 29 May '24
by Pavel Hrdina 29 May '24
29 May '24
The code cleaning up virStorageSource doesn't free data allocated by
virStorageSourceInit() so we need to call virStorageSourceDeinit()
explicitly.
Fixes: 8e664737813378d2a1bdeacc2ca8e942327e2cab
Resolves: https://issues.redhat.com/browse/RHEL-33044
Signed-off-by: Pavel Hrdina <phrdina(a)redhat.com>
---
src/qemu/qemu_snapshot.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c
index 09ec959f10..f5260c4a22 100644
--- a/src/qemu/qemu_snapshot.c
+++ b/src/qemu/qemu_snapshot.c
@@ -2260,6 +2260,8 @@ qemuSnapshotRevertExternalFinish(virDomainObj *vm,
snapdisk->src->path);
}
+ virStorageSourceDeinit(snapdisk->src);
+
virDomainSnapshotDiskDefClear(snapdisk);
}
@@ -2277,6 +2279,8 @@ qemuSnapshotRevertExternalFinish(virDomainObj *vm,
VIR_WARN("Failed to remove snapshot image '%s'",
snapdisk->src->path);
}
+
+ virStorageSourceDeinit(snapdisk->src);
}
}
--
2.45.1
2
1
When attempting to run:
libvirt.git/_build # ./run --selinux ./src/libvirtd
the following error is thrown:
Refusing to change selinux context of file './src/libvirtd' outside build directory
which is obviously wrong. The problem is 'being inside of build
directory' is detected by simple progpath.startswith(builddir).
While builddir is an absolute path, progpath isn't necessarily.
And while looking into the code, I've noticed chcon() function
accessing variable outside its scope when printing out the path
it's working on.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
v2 of:
https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/UZ6F…
diff to v1:
- error out if binary to run can't be identified (i.e. 'which' returns
None).
run.in | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/run.in b/run.in
index 5b89b3dcd5..cada74dfcd 100644
--- a/run.in
+++ b/run.in
@@ -138,7 +138,7 @@ def change_unit(name, action):
def chcon(path, user, role, type):
- print("Setting file context of {} to u={}, r={}, t={}...".format(progpath,
+ print("Setting file context of {} to u={}, r={}, t={}...".format(path,
user,
role,
type))
@@ -187,6 +187,10 @@ else:
try:
dorestorecon = False
progpath = shutil.which(prog)
+ if not progpath:
+ raise Exception("Can't find executable {}"
+ .format(prog))
+ progpath = os.path.abspath(progpath)
if len(try_stop_units):
print("Temporarily stopping systemd units...")
--
2.44.1
2
1
Provides completers for auth-type and source-format commands for
virsh pool-create-as and pool-define-as commands. Use Empty completers
for options where completions are not required. I left the ones where
I was not sure if they need completers.
Related Issue: https://gitlab.com/libvirt/libvirt/-/issues/9
Signed-off-by: Abhiram Tilak <atp.exp(a)gmail.com>
---
src/libvirt_private.syms | 2 ++
tools/virsh-completer-pool.c | 48 +++++++++++++++++++++++++++++++++++-
tools/virsh-completer-pool.h | 10 ++++++++
tools/virsh-pool.c | 8 ++++++
4 files changed, 67 insertions(+), 1 deletion(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 6b6bcc368a..5a413ca832 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1117,6 +1117,8 @@ virStorageAuthDefCopy;
virStorageAuthDefFormat;
virStorageAuthDefFree;
virStorageAuthDefParse;
+virStorageAuthTypeFromString;
+virStorageAuthTypeToString;
virStorageFileFeatureTypeFromString;
virStorageFileFeatureTypeToString;
virStorageFileFormatTypeFromString;
diff --git a/tools/virsh-completer-pool.c b/tools/virsh-completer-pool.c
index 3568bb985b..4a771d894e 100644
--- a/tools/virsh-completer-pool.c
+++ b/tools/virsh-completer-pool.c
@@ -84,7 +84,6 @@ virshPoolEventNameCompleter(vshControl *ctl G_GNUC_UNUSED,
return g_steal_pointer(&tmp);
}
-
char **
virshPoolTypeCompleter(vshControl *ctl,
const vshCmd *cmd,
@@ -106,3 +105,50 @@ virshPoolTypeCompleter(vshControl *ctl,
return virshCommaStringListComplete(type_str, (const char **)tmp);
}
+
+char **
+virshPoolFormatCompleter(vshControl *ctl G_GNUC_UNUSED,
+ const vshCmd *cmd G_GNUC_UNUSED,
+ unsigned int flags)
+{
+ size_t i = 0, j = 0;
+ g_auto(GStrv) tmp = NULL;
+ size_t nformats = VIR_STORAGE_POOL_FS_LAST + VIR_STORAGE_POOL_NETFS_LAST +
+ VIR_STORAGE_POOL_DISK_LAST + VIR_STORAGE_POOL_LOGICAL_LAST;
+
+ virCheckFlags(0, NULL);
+
+ tmp = g_new0(char *, nformats + 1);
+
+ /* Club all PoolFormats for completion */
+ for (i = 0; i < VIR_STORAGE_POOL_FS_LAST; i++)
+ tmp[j++] = g_strdup(virStoragePoolFormatFileSystemTypeToString(i));
+
+ for (i = 0; i < VIR_STORAGE_POOL_NETFS_LAST; i++)
+ tmp[j++] = g_strdup(virStoragePoolFormatFileSystemNetTypeToString(i));
+
+ for (i = 0; i < VIR_STORAGE_POOL_DISK_LAST; i++)
+ tmp[j++] = g_strdup(virStoragePoolFormatDiskTypeToString(i));
+
+ for (i = 0; i < VIR_STORAGE_POOL_LOGICAL_LAST; i++)
+ tmp[j++] = g_strdup(virStoragePoolFormatLogicalTypeToString(i));
+
+ return g_steal_pointer(&tmp);
+}
+
+char ** virshPoolAuthTypeCompleter(vshControl *ctl G_GNUC_UNUSED,
+ const vshCmd *cmd G_GNUC_UNUSED,
+ unsigned int flags)
+{
+ size_t i = 0;
+ g_auto(GStrv) tmp = NULL;
+
+ virCheckFlags(0, NULL);
+
+ tmp = g_new0(char *, VIR_STORAGE_AUTH_TYPE_LAST + 1);
+
+ for (i = 0; i < VIR_STORAGE_AUTH_TYPE_LAST; i++)
+ tmp[i] = g_strdup(virStorageAuthTypeToString(i));
+
+ return g_steal_pointer(&tmp);
+}
diff --git a/tools/virsh-completer-pool.h b/tools/virsh-completer-pool.h
index bff3e5742b..4a53f99577 100644
--- a/tools/virsh-completer-pool.h
+++ b/tools/virsh-completer-pool.h
@@ -40,3 +40,13 @@ char **
virshPoolTypeCompleter(vshControl *ctl,
const vshCmd *cmd,
unsigned int flags);
+
+char **
+virshPoolFormatCompleter(vshControl *ctl,
+ const vshCmd *cmd,
+ unsigned int flags);
+
+char **
+virshPoolAuthTypeCompleter(vshControl *ctl,
+ const vshCmd *cmd,
+ unsigned int flags);
diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c
index 67cc1b94cf..1a294bb0f6 100644
--- a/tools/virsh-pool.c
+++ b/tools/virsh-pool.c
@@ -81,26 +81,32 @@
}, \
{.name = "source-path", \
.type = VSH_OT_STRING, \
+ .completer = virshCompletePathLocalExisting, \
.help = N_("source path for underlying storage") \
}, \
{.name = "source-dev", \
.type = VSH_OT_STRING, \
+ .completer = virshCompleteEmpty, \
.help = N_("source device for underlying storage") \
}, \
{.name = "source-name", \
.type = VSH_OT_STRING, \
+ .completer = virshCompleteEmpty, \
.help = N_("source name for underlying storage") \
}, \
{.name = "target", \
.type = VSH_OT_STRING, \
+ .completer = virshCompleteEmpty, \
.help = N_("target for underlying storage") \
}, \
{.name = "source-format", \
.type = VSH_OT_STRING, \
+ .completer = virshPoolFormatCompleter, \
.help = N_("format for underlying storage") \
}, \
{.name = "auth-type", \
.type = VSH_OT_STRING, \
+ .completer = virshPoolAuthTypeCompleter, \
.help = N_("auth type to be used for underlying storage") \
}, \
{.name = "auth-username", \
@@ -118,6 +124,7 @@
}, \
{.name = "adapter-name", \
.type = VSH_OT_STRING, \
+ .completer = virshCompleteEmpty, \
.help = N_("adapter name to be used for underlying storage") \
}, \
{.name = "adapter-wwnn", \
@@ -146,6 +153,7 @@
}, \
{.name = "source-protocol-ver", \
.type = VSH_OT_STRING, \
+ .completer = virshCompleteEmpty, \
.help = N_("nfsvers value for NFS pool mount option") \
}, \
{.name = "source-initiator", \
--
2.34.1
3
3
We should return the full filename path when we don't have a match on
the third group of the regex.
Signed-off-by: David Negreira <david.negreira(a)canonical.com>
---
src/logging/log_cleaner.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/logging/log_cleaner.c b/src/logging/log_cleaner.c
index 4ee91843aa..d8e6ce9cdd 100644
--- a/src/logging/log_cleaner.c
+++ b/src/logging/log_cleaner.c
@@ -82,7 +82,7 @@ virLogCleanerParseFilename(const char *path,
*rotated_index = 0;
rotated_index_str = g_match_info_fetch(matchInfo, 3);
- if (!rotated_index_str)
+ if (rotated_index_str)
return chain_prefix;
if (virStrToLong_i(rotated_index_str, NULL, 10, rotated_index) < 0) {
--
2.40.1
2
8
28 May '24
Add test data based on qemu commit v9.0.0-995-g60b54b67c6 on x86_64
Comparison to previous release:
Feature additions:
- 9.1 machine type added
- 'SierraForest' cpu type added
- 'SapphireRapids-v3-x86_64-cpu' added
- 'VFIO_MIGRATION' event added (and corresponding 'migration-events'
bool for the device
- 'exit-on-error' argument for 'migrate-incoming' added
- 'sev-guest' gained 'legacy-vm-type' boolean
- cpu topology added 'module' fields
- 'query-machines' gained 'compat-props' boolean and it returns various
- 'deprecated-props' argument for 'query-cpu-model-expansion' added
Deprecated removals:
- legacy non-shared-storage migration fully removed (config/stats)
- legacy migration compression fully removed
- RDMA support removed
- dropped 'nios2' field type from 'query-cpus-fast' return data
fields under 'compat-props'
Note that this dump was done on a newer kernel version which resulted in
the 'pcommit' feature being removed from the few test cases which depend
on the real CPU flag dump.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
.../domaincapsdata/qemu_9.1.0-q35.x86_64.xml | 290 +
.../domaincapsdata/qemu_9.1.0-tcg.x86_64.xml | 289 +
tests/domaincapsdata/qemu_9.1.0.x86_64.xml | 290 +
.../caps_9.1.0_x86_64.replies | 43370 ++++++++++++++++
.../caps_9.1.0_x86_64.xml | 3946 ++
...host-model-fallback-kvm.x86_64-latest.args | 2 +-
...host-model-fallback-tcg.x86_64-latest.args | 2 +-
...cpu-host-model-features.x86_64-latest.args | 2 +-
.../cpu-host-model-kvm.x86_64-latest.args | 2 +-
...st-model-nofallback-kvm.x86_64-latest.args | 2 +-
...st-model-nofallback-tcg.x86_64-latest.args | 2 +-
.../cpu-host-model-tcg.x86_64-latest.args | 2 +-
12 files changed, 48192 insertions(+), 7 deletions(-)
create mode 100644 tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml
create mode 100644 tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml
create mode 100644 tests/domaincapsdata/qemu_9.1.0.x86_64.xml
create mode 100644 tests/qemucapabilitiesdata/caps_9.1.0_x86_64.replies
create mode 100644 tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml
diff --git a/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml
new file mode 100644
index 0000000000..40e8533e16
--- /dev/null
+++ b/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml
@@ -0,0 +1,290 @@
+<domainCapabilities>
+ <path>/usr/bin/qemu-system-x86_64</path>
+ <domain>kvm</domain>
+ <machine>pc-q35-9.1</machine>
+ <arch>x86_64</arch>
+ <vcpu max='4096'/>
+ <iothreads supported='yes'/>
+ <os supported='yes'>
+ <enum name='firmware'>
+ <value>bios</value>
+ <value>efi</value>
+ </enum>
+ <loader supported='yes'>
+ <value>/obviously/fake/firmware1.fd</value>
+ <value>/obviously/fake/firmware2.fd</value>
+ <enum name='type'>
+ <value>rom</value>
+ <value>pflash</value>
+ </enum>
+ <enum name='readonly'>
+ <value>yes</value>
+ <value>no</value>
+ </enum>
+ <enum name='secure'>
+ <value>yes</value>
+ <value>no</value>
+ </enum>
+ </loader>
+ </os>
+ <cpu>
+ <mode name='host-passthrough' supported='yes'>
+ <enum name='hostPassthroughMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
+ <mode name='host-model' supported='yes'>
+ <model fallback='forbid'>EPYC-Rome</model>
+ <vendor>AMD</vendor>
+ <maxphysaddr mode='passthrough' limit='64'/>
+ <feature policy='require' name='x2apic'/>
+ <feature policy='require' name='tsc-deadline'/>
+ <feature policy='require' name='hypervisor'/>
+ <feature policy='require' name='tsc_adjust'/>
+ <feature policy='require' name='stibp'/>
+ <feature policy='require' name='arch-capabilities'/>
+ <feature policy='require' name='ssbd'/>
+ <feature policy='require' name='cmp_legacy'/>
+ <feature policy='require' name='invtsc'/>
+ <feature policy='require' name='amd-ssbd'/>
+ <feature policy='require' name='virt-ssbd'/>
+ <feature policy='require' name='lbrv'/>
+ <feature policy='require' name='tsc-scale'/>
+ <feature policy='require' name='vmcb-clean'/>
+ <feature policy='require' name='flushbyasid'/>
+ <feature policy='require' name='pause-filter'/>
+ <feature policy='require' name='pfthreshold'/>
+ <feature policy='require' name='v-vmsave-vmload'/>
+ <feature policy='require' name='vgif'/>
+ <feature policy='require' name='svme-addr-chk'/>
+ <feature policy='require' name='lfence-always-serializing'/>
+ <feature policy='require' name='null-sel-clr-base'/>
+ <feature policy='require' name='rdctl-no'/>
+ <feature policy='require' name='skip-l1dfl-vmentry'/>
+ <feature policy='require' name='mds-no'/>
+ <feature policy='require' name='pschange-mc-no'/>
+ <feature policy='require' name='gds-no'/>
+ <feature policy='disable' name='xsaves'/>
+ </mode>
+ <mode name='custom' supported='yes'>
+ <model usable='yes' vendor='unknown'>qemu64</model>
+ <model usable='yes' vendor='unknown'>qemu32</model>
+ <model usable='no' vendor='AMD'>phenom</model>
+ <model usable='yes' vendor='unknown'>pentium3</model>
+ <model usable='yes' vendor='unknown'>pentium2</model>
+ <model usable='yes' vendor='unknown'>pentium</model>
+ <model usable='no' vendor='Intel'>n270</model>
+ <model usable='yes' vendor='unknown'>kvm64</model>
+ <model usable='yes' vendor='unknown'>kvm32</model>
+ <model usable='no' vendor='Intel'>coreduo</model>
+ <model usable='no' vendor='Intel'>core2duo</model>
+ <model usable='no' vendor='AMD'>athlon</model>
+ <model usable='no' vendor='Intel'>Westmere-IBRS</model>
+ <model usable='yes' vendor='Intel'>Westmere</model>
+ <model usable='no' vendor='Intel'>Snowridge</model>
+ <model usable='no' vendor='Intel'>Skylake-Server-noTSX-IBRS</model>
+ <model usable='no' vendor='Intel'>Skylake-Server-IBRS</model>
+ <model usable='no' vendor='Intel'>Skylake-Server</model>
+ <model usable='no' vendor='Intel'>Skylake-Client-noTSX-IBRS</model>
+ <model usable='no' vendor='Intel'>Skylake-Client-IBRS</model>
+ <model usable='no' vendor='Intel'>Skylake-Client</model>
+ <model usable='no' vendor='Intel'>SapphireRapids</model>
+ <model usable='no' vendor='Intel'>SandyBridge-IBRS</model>
+ <model usable='yes' vendor='Intel'>SandyBridge</model>
+ <model usable='yes' vendor='Intel'>Penryn</model>
+ <model usable='no' vendor='AMD'>Opteron_G5</model>
+ <model usable='no' vendor='AMD'>Opteron_G4</model>
+ <model usable='yes' vendor='AMD'>Opteron_G3</model>
+ <model usable='yes' vendor='AMD'>Opteron_G2</model>
+ <model usable='yes' vendor='AMD'>Opteron_G1</model>
+ <model usable='no' vendor='Intel'>Nehalem-IBRS</model>
+ <model usable='yes' vendor='Intel'>Nehalem</model>
+ <model usable='no' vendor='Intel'>IvyBridge-IBRS</model>
+ <model usable='no' vendor='Intel'>IvyBridge</model>
+ <model usable='no' vendor='Intel'>Icelake-Server-noTSX</model>
+ <model usable='no' vendor='Intel'>Icelake-Server</model>
+ <model usable='no' vendor='Intel'>Haswell-noTSX-IBRS</model>
+ <model usable='no' vendor='Intel'>Haswell-noTSX</model>
+ <model usable='no' vendor='Intel'>Haswell-IBRS</model>
+ <model usable='no' vendor='Intel'>Haswell</model>
+ <model usable='no' vendor='AMD'>EPYC-Rome</model>
+ <model usable='no' vendor='AMD'>EPYC-Milan</model>
+ <model usable='yes' vendor='AMD'>EPYC-IBPB</model>
+ <model usable='no' vendor='AMD'>EPYC-Genoa</model>
+ <model usable='yes' vendor='AMD'>EPYC</model>
+ <model usable='yes' vendor='Hygon'>Dhyana</model>
+ <model usable='no' vendor='Intel'>Cooperlake</model>
+ <model usable='yes' vendor='Intel'>Conroe</model>
+ <model usable='no' vendor='Intel'>Cascadelake-Server-noTSX</model>
+ <model usable='no' vendor='Intel'>Cascadelake-Server</model>
+ <model usable='no' vendor='Intel'>Broadwell-noTSX-IBRS</model>
+ <model usable='no' vendor='Intel'>Broadwell-noTSX</model>
+ <model usable='no' vendor='Intel'>Broadwell-IBRS</model>
+ <model usable='no' vendor='Intel'>Broadwell</model>
+ <model usable='yes' vendor='unknown'>486</model>
+ </mode>
+ </cpu>
+ <memoryBacking supported='yes'>
+ <enum name='sourceType'>
+ <value>file</value>
+ <value>anonymous</value>
+ <value>memfd</value>
+ </enum>
+ </memoryBacking>
+ <devices>
+ <disk supported='yes'>
+ <enum name='diskDevice'>
+ <value>disk</value>
+ <value>cdrom</value>
+ <value>floppy</value>
+ <value>lun</value>
+ </enum>
+ <enum name='bus'>
+ <value>fdc</value>
+ <value>scsi</value>
+ <value>virtio</value>
+ <value>usb</value>
+ <value>sata</value>
+ </enum>
+ <enum name='model'>
+ <value>virtio</value>
+ <value>virtio-transitional</value>
+ <value>virtio-non-transitional</value>
+ </enum>
+ </disk>
+ <graphics supported='yes'>
+ <enum name='type'>
+ <value>sdl</value>
+ <value>vnc</value>
+ <value>spice</value>
+ <value>egl-headless</value>
+ <value>dbus</value>
+ </enum>
+ </graphics>
+ <video supported='yes'>
+ <enum name='modelType'>
+ <value>vga</value>
+ <value>cirrus</value>
+ <value>vmvga</value>
+ <value>qxl</value>
+ <value>virtio</value>
+ <value>none</value>
+ <value>bochs</value>
+ <value>ramfb</value>
+ </enum>
+ </video>
+ <hostdev supported='yes'>
+ <enum name='mode'>
+ <value>subsystem</value>
+ </enum>
+ <enum name='startupPolicy'>
+ <value>default</value>
+ <value>mandatory</value>
+ <value>requisite</value>
+ <value>optional</value>
+ </enum>
+ <enum name='subsysType'>
+ <value>usb</value>
+ <value>pci</value>
+ <value>scsi</value>
+ </enum>
+ <enum name='capsType'/>
+ <enum name='pciBackend'>
+ <value>default</value>
+ <value>vfio</value>
+ </enum>
+ </hostdev>
+ <rng supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ <value>virtio-transitional</value>
+ <value>virtio-non-transitional</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>random</value>
+ <value>egd</value>
+ <value>builtin</value>
+ </enum>
+ </rng>
+ <filesystem supported='yes'>
+ <enum name='driverType'>
+ <value>path</value>
+ <value>handle</value>
+ <value>virtiofs</value>
+ </enum>
+ </filesystem>
+ <tpm supported='yes'>
+ <enum name='model'>
+ <value>tpm-tis</value>
+ <value>tpm-crb</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>passthrough</value>
+ <value>emulator</value>
+ <value>external</value>
+ </enum>
+ <enum name='backendVersion'>
+ <value>2.0</value>
+ </enum>
+ </tpm>
+ <redirdev supported='yes'>
+ <enum name='bus'>
+ <value>usb</value>
+ </enum>
+ </redirdev>
+ <channel supported='yes'>
+ <enum name='type'>
+ <value>pty</value>
+ <value>unix</value>
+ <value>spicevmc</value>
+ </enum>
+ </channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ <value>lkcf</value>
+ </enum>
+ </crypto>
+ </devices>
+ <features>
+ <gic supported='no'/>
+ <vmcoreinfo supported='yes'/>
+ <genid supported='yes'/>
+ <backingStoreInput supported='yes'/>
+ <backup supported='yes'/>
+ <async-teardown supported='yes'/>
+ <sev supported='no'/>
+ <sgx supported='no'/>
+ <hyperv supported='yes'>
+ <enum name='features'>
+ <value>relaxed</value>
+ <value>vapic</value>
+ <value>spinlocks</value>
+ <value>vpindex</value>
+ <value>runtime</value>
+ <value>synic</value>
+ <value>stimer</value>
+ <value>reset</value>
+ <value>vendor_id</value>
+ <value>frequencies</value>
+ <value>reenlightenment</value>
+ <value>tlbflush</value>
+ <value>ipi</value>
+ <value>avic</value>
+ </enum>
+ </hyperv>
+ </features>
+</domainCapabilities>
diff --git a/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml
new file mode 100644
index 0000000000..996d2e9390
--- /dev/null
+++ b/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml
@@ -0,0 +1,289 @@
+<domainCapabilities>
+ <path>/usr/bin/qemu-system-x86_64</path>
+ <domain>qemu</domain>
+ <machine>pc-i440fx-9.1</machine>
+ <arch>x86_64</arch>
+ <vcpu max='255'/>
+ <iothreads supported='yes'/>
+ <os supported='yes'>
+ <enum name='firmware'>
+ <value>bios</value>
+ <value>efi</value>
+ </enum>
+ <loader supported='yes'>
+ <value>/obviously/fake/firmware1.fd</value>
+ <value>/obviously/fake/firmware2.fd</value>
+ <enum name='type'>
+ <value>rom</value>
+ <value>pflash</value>
+ </enum>
+ <enum name='readonly'>
+ <value>yes</value>
+ <value>no</value>
+ </enum>
+ <enum name='secure'>
+ <value>no</value>
+ </enum>
+ </loader>
+ </os>
+ <cpu>
+ <mode name='host-passthrough' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
+ <mode name='host-model' supported='yes'>
+ <model fallback='forbid'>EPYC</model>
+ <vendor>AMD</vendor>
+ <feature policy='require' name='monitor'/>
+ <feature policy='require' name='x2apic'/>
+ <feature policy='require' name='hypervisor'/>
+ <feature policy='require' name='acpi'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='erms'/>
+ <feature policy='require' name='mpx'/>
+ <feature policy='require' name='clwb'/>
+ <feature policy='require' name='umip'/>
+ <feature policy='require' name='pku'/>
+ <feature policy='require' name='vaes'/>
+ <feature policy='require' name='la57'/>
+ <feature policy='require' name='rdpid'/>
+ <feature policy='require' name='pks'/>
+ <feature policy='require' name='fsrm'/>
+ <feature policy='require' name='cmpccxadd'/>
+ <feature policy='require' name='fzrm'/>
+ <feature policy='require' name='fsrs'/>
+ <feature policy='require' name='fsrc'/>
+ <feature policy='require' name='3dnowext'/>
+ <feature policy='require' name='3dnow'/>
+ <feature policy='require' name='xsaveerptr'/>
+ <feature policy='require' name='wbnoinvd'/>
+ <feature policy='require' name='npt'/>
+ <feature policy='require' name='vgif'/>
+ <feature policy='require' name='svme-addr-chk'/>
+ <feature policy='disable' name='vme'/>
+ <feature policy='disable' name='xsavec'/>
+ <feature policy='disable' name='misalignsse'/>
+ <feature policy='disable' name='osvw'/>
+ <feature policy='disable' name='topoext'/>
+ <feature policy='disable' name='fxsr_opt'/>
+ <feature policy='disable' name='nrip-save'/>
+ </mode>
+ <mode name='custom' supported='yes'>
+ <model usable='yes' vendor='unknown'>qemu64</model>
+ <model usable='yes' vendor='unknown'>qemu32</model>
+ <model usable='no' vendor='AMD'>phenom</model>
+ <model usable='yes' vendor='unknown'>pentium3</model>
+ <model usable='yes' vendor='unknown'>pentium2</model>
+ <model usable='yes' vendor='unknown'>pentium</model>
+ <model usable='yes' vendor='Intel'>n270</model>
+ <model usable='yes' vendor='unknown'>kvm64</model>
+ <model usable='yes' vendor='unknown'>kvm32</model>
+ <model usable='yes' vendor='Intel'>coreduo</model>
+ <model usable='yes' vendor='Intel'>core2duo</model>
+ <model usable='yes' vendor='AMD'>athlon</model>
+ <model usable='no' vendor='Intel'>Westmere-IBRS</model>
+ <model usable='yes' vendor='Intel'>Westmere</model>
+ <model usable='no' vendor='Intel'>Snowridge</model>
+ <model usable='no' vendor='Intel'>Skylake-Server-noTSX-IBRS</model>
+ <model usable='no' vendor='Intel'>Skylake-Server-IBRS</model>
+ <model usable='no' vendor='Intel'>Skylake-Server</model>
+ <model usable='no' vendor='Intel'>Skylake-Client-noTSX-IBRS</model>
+ <model usable='no' vendor='Intel'>Skylake-Client-IBRS</model>
+ <model usable='no' vendor='Intel'>Skylake-Client</model>
+ <model usable='no' vendor='Intel'>SapphireRapids</model>
+ <model usable='no' vendor='Intel'>SandyBridge-IBRS</model>
+ <model usable='no' vendor='Intel'>SandyBridge</model>
+ <model usable='yes' vendor='Intel'>Penryn</model>
+ <model usable='no' vendor='AMD'>Opteron_G5</model>
+ <model usable='no' vendor='AMD'>Opteron_G4</model>
+ <model usable='no' vendor='AMD'>Opteron_G3</model>
+ <model usable='yes' vendor='AMD'>Opteron_G2</model>
+ <model usable='yes' vendor='AMD'>Opteron_G1</model>
+ <model usable='no' vendor='Intel'>Nehalem-IBRS</model>
+ <model usable='yes' vendor='Intel'>Nehalem</model>
+ <model usable='no' vendor='Intel'>IvyBridge-IBRS</model>
+ <model usable='no' vendor='Intel'>IvyBridge</model>
+ <model usable='no' vendor='Intel'>Icelake-Server-noTSX</model>
+ <model usable='no' vendor='Intel'>Icelake-Server</model>
+ <model usable='no' vendor='Intel'>Haswell-noTSX-IBRS</model>
+ <model usable='no' vendor='Intel'>Haswell-noTSX</model>
+ <model usable='no' vendor='Intel'>Haswell-IBRS</model>
+ <model usable='no' vendor='Intel'>Haswell</model>
+ <model usable='no' vendor='AMD'>EPYC-Rome</model>
+ <model usable='no' vendor='AMD'>EPYC-Milan</model>
+ <model usable='no' vendor='AMD'>EPYC-IBPB</model>
+ <model usable='no' vendor='AMD'>EPYC-Genoa</model>
+ <model usable='no' vendor='AMD'>EPYC</model>
+ <model usable='no' vendor='Hygon'>Dhyana</model>
+ <model usable='no' vendor='Intel'>Cooperlake</model>
+ <model usable='yes' vendor='Intel'>Conroe</model>
+ <model usable='no' vendor='Intel'>Cascadelake-Server-noTSX</model>
+ <model usable='no' vendor='Intel'>Cascadelake-Server</model>
+ <model usable='no' vendor='Intel'>Broadwell-noTSX-IBRS</model>
+ <model usable='no' vendor='Intel'>Broadwell-noTSX</model>
+ <model usable='no' vendor='Intel'>Broadwell-IBRS</model>
+ <model usable='no' vendor='Intel'>Broadwell</model>
+ <model usable='yes' vendor='unknown'>486</model>
+ </mode>
+ </cpu>
+ <memoryBacking supported='yes'>
+ <enum name='sourceType'>
+ <value>file</value>
+ <value>anonymous</value>
+ <value>memfd</value>
+ </enum>
+ </memoryBacking>
+ <devices>
+ <disk supported='yes'>
+ <enum name='diskDevice'>
+ <value>disk</value>
+ <value>cdrom</value>
+ <value>floppy</value>
+ <value>lun</value>
+ </enum>
+ <enum name='bus'>
+ <value>ide</value>
+ <value>fdc</value>
+ <value>scsi</value>
+ <value>virtio</value>
+ <value>usb</value>
+ <value>sata</value>
+ </enum>
+ <enum name='model'>
+ <value>virtio</value>
+ <value>virtio-transitional</value>
+ <value>virtio-non-transitional</value>
+ </enum>
+ </disk>
+ <graphics supported='yes'>
+ <enum name='type'>
+ <value>sdl</value>
+ <value>vnc</value>
+ <value>spice</value>
+ <value>egl-headless</value>
+ <value>dbus</value>
+ </enum>
+ </graphics>
+ <video supported='yes'>
+ <enum name='modelType'>
+ <value>vga</value>
+ <value>cirrus</value>
+ <value>vmvga</value>
+ <value>qxl</value>
+ <value>virtio</value>
+ <value>none</value>
+ <value>bochs</value>
+ <value>ramfb</value>
+ </enum>
+ </video>
+ <hostdev supported='yes'>
+ <enum name='mode'>
+ <value>subsystem</value>
+ </enum>
+ <enum name='startupPolicy'>
+ <value>default</value>
+ <value>mandatory</value>
+ <value>requisite</value>
+ <value>optional</value>
+ </enum>
+ <enum name='subsysType'>
+ <value>usb</value>
+ <value>pci</value>
+ <value>scsi</value>
+ </enum>
+ <enum name='capsType'/>
+ <enum name='pciBackend'>
+ <value>default</value>
+ <value>vfio</value>
+ </enum>
+ </hostdev>
+ <rng supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ <value>virtio-transitional</value>
+ <value>virtio-non-transitional</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>random</value>
+ <value>egd</value>
+ <value>builtin</value>
+ </enum>
+ </rng>
+ <filesystem supported='yes'>
+ <enum name='driverType'>
+ <value>path</value>
+ <value>handle</value>
+ <value>virtiofs</value>
+ </enum>
+ </filesystem>
+ <tpm supported='yes'>
+ <enum name='model'>
+ <value>tpm-tis</value>
+ <value>tpm-crb</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>passthrough</value>
+ <value>emulator</value>
+ <value>external</value>
+ </enum>
+ <enum name='backendVersion'>
+ <value>2.0</value>
+ </enum>
+ </tpm>
+ <redirdev supported='yes'>
+ <enum name='bus'>
+ <value>usb</value>
+ </enum>
+ </redirdev>
+ <channel supported='yes'>
+ <enum name='type'>
+ <value>pty</value>
+ <value>unix</value>
+ <value>spicevmc</value>
+ </enum>
+ </channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ <value>lkcf</value>
+ </enum>
+ </crypto>
+ </devices>
+ <features>
+ <gic supported='no'/>
+ <vmcoreinfo supported='yes'/>
+ <genid supported='yes'/>
+ <backingStoreInput supported='yes'/>
+ <backup supported='yes'/>
+ <async-teardown supported='yes'/>
+ <sev supported='no'/>
+ <sgx supported='no'/>
+ <hyperv supported='yes'>
+ <enum name='features'>
+ <value>relaxed</value>
+ <value>vapic</value>
+ <value>spinlocks</value>
+ <value>vpindex</value>
+ <value>runtime</value>
+ <value>synic</value>
+ <value>stimer</value>
+ <value>reset</value>
+ <value>vendor_id</value>
+ <value>frequencies</value>
+ <value>reenlightenment</value>
+ <value>tlbflush</value>
+ <value>ipi</value>
+ <value>avic</value>
+ </enum>
+ </hyperv>
+ </features>
+</domainCapabilities>
diff --git a/tests/domaincapsdata/qemu_9.1.0.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0.x86_64.xml
new file mode 100644
index 0000000000..6381d05bf2
--- /dev/null
+++ b/tests/domaincapsdata/qemu_9.1.0.x86_64.xml
@@ -0,0 +1,290 @@
+<domainCapabilities>
+ <path>/usr/bin/qemu-system-x86_64</path>
+ <domain>kvm</domain>
+ <machine>pc-i440fx-9.1</machine>
+ <arch>x86_64</arch>
+ <vcpu max='255'/>
+ <iothreads supported='yes'/>
+ <os supported='yes'>
+ <enum name='firmware'>
+ <value>bios</value>
+ <value>efi</value>
+ </enum>
+ <loader supported='yes'>
+ <value>/obviously/fake/firmware1.fd</value>
+ <value>/obviously/fake/firmware2.fd</value>
+ <enum name='type'>
+ <value>rom</value>
+ <value>pflash</value>
+ </enum>
+ <enum name='readonly'>
+ <value>yes</value>
+ <value>no</value>
+ </enum>
+ <enum name='secure'>
+ <value>no</value>
+ </enum>
+ </loader>
+ </os>
+ <cpu>
+ <mode name='host-passthrough' supported='yes'>
+ <enum name='hostPassthroughMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
+ <mode name='host-model' supported='yes'>
+ <model fallback='forbid'>EPYC-Rome</model>
+ <vendor>AMD</vendor>
+ <maxphysaddr mode='passthrough' limit='64'/>
+ <feature policy='require' name='x2apic'/>
+ <feature policy='require' name='tsc-deadline'/>
+ <feature policy='require' name='hypervisor'/>
+ <feature policy='require' name='tsc_adjust'/>
+ <feature policy='require' name='stibp'/>
+ <feature policy='require' name='arch-capabilities'/>
+ <feature policy='require' name='ssbd'/>
+ <feature policy='require' name='cmp_legacy'/>
+ <feature policy='require' name='invtsc'/>
+ <feature policy='require' name='amd-ssbd'/>
+ <feature policy='require' name='virt-ssbd'/>
+ <feature policy='require' name='lbrv'/>
+ <feature policy='require' name='tsc-scale'/>
+ <feature policy='require' name='vmcb-clean'/>
+ <feature policy='require' name='flushbyasid'/>
+ <feature policy='require' name='pause-filter'/>
+ <feature policy='require' name='pfthreshold'/>
+ <feature policy='require' name='v-vmsave-vmload'/>
+ <feature policy='require' name='vgif'/>
+ <feature policy='require' name='svme-addr-chk'/>
+ <feature policy='require' name='lfence-always-serializing'/>
+ <feature policy='require' name='null-sel-clr-base'/>
+ <feature policy='require' name='rdctl-no'/>
+ <feature policy='require' name='skip-l1dfl-vmentry'/>
+ <feature policy='require' name='mds-no'/>
+ <feature policy='require' name='pschange-mc-no'/>
+ <feature policy='require' name='gds-no'/>
+ <feature policy='disable' name='xsaves'/>
+ </mode>
+ <mode name='custom' supported='yes'>
+ <model usable='yes' vendor='unknown'>qemu64</model>
+ <model usable='yes' vendor='unknown'>qemu32</model>
+ <model usable='no' vendor='AMD'>phenom</model>
+ <model usable='yes' vendor='unknown'>pentium3</model>
+ <model usable='yes' vendor='unknown'>pentium2</model>
+ <model usable='yes' vendor='unknown'>pentium</model>
+ <model usable='no' vendor='Intel'>n270</model>
+ <model usable='yes' vendor='unknown'>kvm64</model>
+ <model usable='yes' vendor='unknown'>kvm32</model>
+ <model usable='no' vendor='Intel'>coreduo</model>
+ <model usable='no' vendor='Intel'>core2duo</model>
+ <model usable='no' vendor='AMD'>athlon</model>
+ <model usable='no' vendor='Intel'>Westmere-IBRS</model>
+ <model usable='yes' vendor='Intel'>Westmere</model>
+ <model usable='no' vendor='Intel'>Snowridge</model>
+ <model usable='no' vendor='Intel'>Skylake-Server-noTSX-IBRS</model>
+ <model usable='no' vendor='Intel'>Skylake-Server-IBRS</model>
+ <model usable='no' vendor='Intel'>Skylake-Server</model>
+ <model usable='no' vendor='Intel'>Skylake-Client-noTSX-IBRS</model>
+ <model usable='no' vendor='Intel'>Skylake-Client-IBRS</model>
+ <model usable='no' vendor='Intel'>Skylake-Client</model>
+ <model usable='no' vendor='Intel'>SapphireRapids</model>
+ <model usable='no' vendor='Intel'>SandyBridge-IBRS</model>
+ <model usable='yes' vendor='Intel'>SandyBridge</model>
+ <model usable='yes' vendor='Intel'>Penryn</model>
+ <model usable='no' vendor='AMD'>Opteron_G5</model>
+ <model usable='no' vendor='AMD'>Opteron_G4</model>
+ <model usable='yes' vendor='AMD'>Opteron_G3</model>
+ <model usable='yes' vendor='AMD'>Opteron_G2</model>
+ <model usable='yes' vendor='AMD'>Opteron_G1</model>
+ <model usable='no' vendor='Intel'>Nehalem-IBRS</model>
+ <model usable='yes' vendor='Intel'>Nehalem</model>
+ <model usable='no' vendor='Intel'>IvyBridge-IBRS</model>
+ <model usable='no' vendor='Intel'>IvyBridge</model>
+ <model usable='no' vendor='Intel'>Icelake-Server-noTSX</model>
+ <model usable='no' vendor='Intel'>Icelake-Server</model>
+ <model usable='no' vendor='Intel'>Haswell-noTSX-IBRS</model>
+ <model usable='no' vendor='Intel'>Haswell-noTSX</model>
+ <model usable='no' vendor='Intel'>Haswell-IBRS</model>
+ <model usable='no' vendor='Intel'>Haswell</model>
+ <model usable='no' vendor='AMD'>EPYC-Rome</model>
+ <model usable='no' vendor='AMD'>EPYC-Milan</model>
+ <model usable='yes' vendor='AMD'>EPYC-IBPB</model>
+ <model usable='no' vendor='AMD'>EPYC-Genoa</model>
+ <model usable='yes' vendor='AMD'>EPYC</model>
+ <model usable='yes' vendor='Hygon'>Dhyana</model>
+ <model usable='no' vendor='Intel'>Cooperlake</model>
+ <model usable='yes' vendor='Intel'>Conroe</model>
+ <model usable='no' vendor='Intel'>Cascadelake-Server-noTSX</model>
+ <model usable='no' vendor='Intel'>Cascadelake-Server</model>
+ <model usable='no' vendor='Intel'>Broadwell-noTSX-IBRS</model>
+ <model usable='no' vendor='Intel'>Broadwell-noTSX</model>
+ <model usable='no' vendor='Intel'>Broadwell-IBRS</model>
+ <model usable='no' vendor='Intel'>Broadwell</model>
+ <model usable='yes' vendor='unknown'>486</model>
+ </mode>
+ </cpu>
+ <memoryBacking supported='yes'>
+ <enum name='sourceType'>
+ <value>file</value>
+ <value>anonymous</value>
+ <value>memfd</value>
+ </enum>
+ </memoryBacking>
+ <devices>
+ <disk supported='yes'>
+ <enum name='diskDevice'>
+ <value>disk</value>
+ <value>cdrom</value>
+ <value>floppy</value>
+ <value>lun</value>
+ </enum>
+ <enum name='bus'>
+ <value>ide</value>
+ <value>fdc</value>
+ <value>scsi</value>
+ <value>virtio</value>
+ <value>usb</value>
+ <value>sata</value>
+ </enum>
+ <enum name='model'>
+ <value>virtio</value>
+ <value>virtio-transitional</value>
+ <value>virtio-non-transitional</value>
+ </enum>
+ </disk>
+ <graphics supported='yes'>
+ <enum name='type'>
+ <value>sdl</value>
+ <value>vnc</value>
+ <value>spice</value>
+ <value>egl-headless</value>
+ <value>dbus</value>
+ </enum>
+ </graphics>
+ <video supported='yes'>
+ <enum name='modelType'>
+ <value>vga</value>
+ <value>cirrus</value>
+ <value>vmvga</value>
+ <value>qxl</value>
+ <value>virtio</value>
+ <value>none</value>
+ <value>bochs</value>
+ <value>ramfb</value>
+ </enum>
+ </video>
+ <hostdev supported='yes'>
+ <enum name='mode'>
+ <value>subsystem</value>
+ </enum>
+ <enum name='startupPolicy'>
+ <value>default</value>
+ <value>mandatory</value>
+ <value>requisite</value>
+ <value>optional</value>
+ </enum>
+ <enum name='subsysType'>
+ <value>usb</value>
+ <value>pci</value>
+ <value>scsi</value>
+ </enum>
+ <enum name='capsType'/>
+ <enum name='pciBackend'>
+ <value>default</value>
+ <value>vfio</value>
+ </enum>
+ </hostdev>
+ <rng supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ <value>virtio-transitional</value>
+ <value>virtio-non-transitional</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>random</value>
+ <value>egd</value>
+ <value>builtin</value>
+ </enum>
+ </rng>
+ <filesystem supported='yes'>
+ <enum name='driverType'>
+ <value>path</value>
+ <value>handle</value>
+ <value>virtiofs</value>
+ </enum>
+ </filesystem>
+ <tpm supported='yes'>
+ <enum name='model'>
+ <value>tpm-tis</value>
+ <value>tpm-crb</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>passthrough</value>
+ <value>emulator</value>
+ <value>external</value>
+ </enum>
+ <enum name='backendVersion'>
+ <value>2.0</value>
+ </enum>
+ </tpm>
+ <redirdev supported='yes'>
+ <enum name='bus'>
+ <value>usb</value>
+ </enum>
+ </redirdev>
+ <channel supported='yes'>
+ <enum name='type'>
+ <value>pty</value>
+ <value>unix</value>
+ <value>spicevmc</value>
+ </enum>
+ </channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ <value>lkcf</value>
+ </enum>
+ </crypto>
+ </devices>
+ <features>
+ <gic supported='no'/>
+ <vmcoreinfo supported='yes'/>
+ <genid supported='yes'/>
+ <backingStoreInput supported='yes'/>
+ <backup supported='yes'/>
+ <async-teardown supported='yes'/>
+ <sev supported='no'/>
+ <sgx supported='no'/>
+ <hyperv supported='yes'>
+ <enum name='features'>
+ <value>relaxed</value>
+ <value>vapic</value>
+ <value>spinlocks</value>
+ <value>vpindex</value>
+ <value>runtime</value>
+ <value>synic</value>
+ <value>stimer</value>
+ <value>reset</value>
+ <value>vendor_id</value>
+ <value>frequencies</value>
+ <value>reenlightenment</value>
+ <value>tlbflush</value>
+ <value>ipi</value>
+ <value>avic</value>
+ </enum>
+ </hyperv>
+ </features>
+</domainCapabilities>
diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.replies b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.replies
new file mode 100644
index 0000000000..18389575e4
--- /dev/null
+++ b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.replies
@@ -0,0 +1,43370 @@
+{
+ "execute": "qmp_capabilities",
+ "id": "libvirt-1"
+}
+
+{
+ "return": {},
+ "id": "libvirt-1"
+}
+
+{
+ "execute": "query-version",
+ "id": "libvirt-2"
+}
+
+{
+ "return": {
+ "qemu": {
+ "micro": 50,
+ "minor": 0,
+ "major": 9
+ },
+ "package": "v9.0.0-995-g60b54b67c6"
+ },
+ "id": "libvirt-2"
+}
+
+{
+ "execute": "query-target",
+ "id": "libvirt-3"
+}
+
+{
+ "return": {
+ "arch": "x86_64"
+ },
+ "id": "libvirt-3"
+}
+
+{
+ "execute": "query-qmp-schema",
+ "id": "libvirt-4"
+}
+
+{
+ "return": [
+ {
+ "name": "query-status",
+ "ret-type": "1",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "SHUTDOWN",
+ "meta-type": "event",
+ "arg-type": "2"
+ },
+ {
+ "name": "POWERDOWN",
+ "meta-type": "event",
+ "arg-type": "0"
+ },
+ {
+ "name": "RESET",
+ "meta-type": "event",
+ "arg-type": "3"
+ },
+ {
+ "name": "STOP",
+ "meta-type": "event",
+ "arg-type": "0"
+ },
+ {
+ "name": "RESUME",
+ "meta-type": "event",
+ "arg-type": "0"
+ },
+ {
+ "name": "SUSPEND",
+ "meta-type": "event",
+ "arg-type": "0"
+ },
+ {
+ "name": "SUSPEND_DISK",
+ "meta-type": "event",
+ "arg-type": "0"
+ },
+ {
+ "name": "WAKEUP",
+ "meta-type": "event",
+ "arg-type": "0"
+ },
+ {
+ "name": "WATCHDOG",
+ "meta-type": "event",
+ "arg-type": "4"
+ },
+ {
+ "name": "watchdog-set-action",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "5"
+ },
+ {
+ "name": "set-action",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "6"
+ },
+ {
+ "name": "GUEST_PANICKED",
+ "meta-type": "event",
+ "arg-type": "7"
+ },
+ {
+ "name": "GUEST_CRASHLOADED",
+ "meta-type": "event",
+ "arg-type": "8"
+ },
+ {
+ "name": "MEMORY_FAILURE",
+ "meta-type": "event",
+ "arg-type": "9"
+ },
+ {
+ "name": "JOB_STATUS_CHANGE",
+ "meta-type": "event",
+ "arg-type": "10"
+ },
+ {
+ "name": "job-pause",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "11"
+ },
+ {
+ "name": "job-resume",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "12"
+ },
+ {
+ "name": "job-cancel",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "13"
+ },
+ {
+ "name": "job-complete",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "14"
+ },
+ {
+ "name": "job-dismiss",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "15"
+ },
+ {
+ "name": "job-finalize",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "16"
+ },
+ {
+ "name": "query-jobs",
+ "ret-type": "[17]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-pr-managers",
+ "ret-type": "[18]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "eject",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "19"
+ },
+ {
+ "name": "blockdev-open-tray",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "20"
+ },
+ {
+ "name": "blockdev-close-tray",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "21"
+ },
+ {
+ "name": "blockdev-remove-medium",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "22"
+ },
+ {
+ "name": "blockdev-insert-medium",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "23"
+ },
+ {
+ "name": "blockdev-change-medium",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "24"
+ },
+ {
+ "name": "DEVICE_TRAY_MOVED",
+ "meta-type": "event",
+ "arg-type": "25"
+ },
+ {
+ "name": "PR_MANAGER_STATUS_CHANGED",
+ "meta-type": "event",
+ "arg-type": "26"
+ },
+ {
+ "name": "block_set_io_throttle",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "27"
+ },
+ {
+ "name": "block-latency-histogram-set",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "28"
+ },
+ {
+ "name": "query-block",
+ "ret-type": "[29]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-blockstats",
+ "ret-type": "[31]",
+ "meta-type": "command",
+ "arg-type": "30"
+ },
+ {
+ "name": "query-block-jobs",
+ "ret-type": "[32]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "block_resize",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "33"
+ },
+ {
+ "name": "blockdev-snapshot-sync",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "34"
+ },
+ {
+ "name": "blockdev-snapshot",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "35",
+ "features": [
+ "allow-write-only-overlay"
+ ]
+ },
+ {
+ "name": "change-backing-file",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "36"
+ },
+ {
+ "name": "block-commit",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "37"
+ },
+ {
+ "name": "drive-backup",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "38",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "blockdev-backup",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "39"
+ },
+ {
+ "name": "query-named-block-nodes",
+ "ret-type": "[41]",
+ "meta-type": "command",
+ "arg-type": "40"
+ },
+ {
+ "name": "x-debug-query-block-graph",
+ "ret-type": "42",
+ "meta-type": "command",
+ "arg-type": "0",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "drive-mirror",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "43"
+ },
+ {
+ "name": "block-dirty-bitmap-add",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "44"
+ },
+ {
+ "name": "block-dirty-bitmap-remove",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "45"
+ },
+ {
+ "name": "block-dirty-bitmap-clear",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "45"
+ },
+ {
+ "name": "block-dirty-bitmap-enable",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "45"
+ },
+ {
+ "name": "block-dirty-bitmap-disable",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "45"
+ },
+ {
+ "name": "block-dirty-bitmap-merge",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "46"
+ },
+ {
+ "name": "x-debug-block-dirty-bitmap-sha256",
+ "ret-type": "47",
+ "meta-type": "command",
+ "arg-type": "45",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "blockdev-mirror",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "48"
+ },
+ {
+ "name": "block-stream",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "49"
+ },
+ {
+ "name": "block-job-set-speed",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "50"
+ },
+ {
+ "name": "block-job-cancel",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "51"
+ },
+ {
+ "name": "block-job-pause",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "52"
+ },
+ {
+ "name": "block-job-resume",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "53"
+ },
+ {
+ "name": "block-job-complete",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "54"
+ },
+ {
+ "name": "block-job-dismiss",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "55"
+ },
+ {
+ "name": "block-job-finalize",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "56"
+ },
+ {
+ "name": "block-job-change",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "57"
+ },
+ {
+ "name": "blockdev-add",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "58"
+ },
+ {
+ "name": "blockdev-reopen",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "59"
+ },
+ {
+ "name": "blockdev-del",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "60"
+ },
+ {
+ "name": "blockdev-create",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "61"
+ },
+ {
+ "name": "x-blockdev-amend",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "62",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "BLOCK_IMAGE_CORRUPTED",
+ "meta-type": "event",
+ "arg-type": "63"
+ },
+ {
+ "name": "BLOCK_IO_ERROR",
+ "meta-type": "event",
+ "arg-type": "64"
+ },
+ {
+ "name": "BLOCK_JOB_COMPLETED",
+ "meta-type": "event",
+ "arg-type": "65"
+ },
+ {
+ "name": "BLOCK_JOB_CANCELLED",
+ "meta-type": "event",
+ "arg-type": "66"
+ },
+ {
+ "name": "BLOCK_JOB_ERROR",
+ "meta-type": "event",
+ "arg-type": "67"
+ },
+ {
+ "name": "BLOCK_JOB_READY",
+ "meta-type": "event",
+ "arg-type": "68"
+ },
+ {
+ "name": "BLOCK_JOB_PENDING",
+ "meta-type": "event",
+ "arg-type": "69"
+ },
+ {
+ "name": "BLOCK_WRITE_THRESHOLD",
+ "meta-type": "event",
+ "arg-type": "70"
+ },
+ {
+ "name": "block-set-write-threshold",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "71"
+ },
+ {
+ "name": "x-blockdev-change",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "72",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-blockdev-set-iothread",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "73",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "QUORUM_FAILURE",
+ "meta-type": "event",
+ "arg-type": "74"
+ },
+ {
+ "name": "QUORUM_REPORT_BAD",
+ "meta-type": "event",
+ "arg-type": "75"
+ },
+ {
+ "name": "blockdev-snapshot-internal-sync",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "76"
+ },
+ {
+ "name": "blockdev-snapshot-delete-internal-sync",
+ "ret-type": "78",
+ "meta-type": "command",
+ "arg-type": "77"
+ },
+ {
+ "name": "nbd-server-start",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "79"
+ },
+ {
+ "name": "nbd-server-add",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "80",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "nbd-server-remove",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "81",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "nbd-server-stop",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "block-export-add",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "82"
+ },
+ {
+ "name": "block-export-del",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "83"
+ },
+ {
+ "name": "BLOCK_EXPORT_DELETED",
+ "meta-type": "event",
+ "arg-type": "84"
+ },
+ {
+ "name": "query-block-exports",
+ "ret-type": "[85]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-chardev",
+ "ret-type": "[86]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-chardev-backends",
+ "ret-type": "[87]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "ringbuf-write",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "88"
+ },
+ {
+ "name": "ringbuf-read",
+ "ret-type": "str",
+ "meta-type": "command",
+ "arg-type": "89"
+ },
+ {
+ "name": "chardev-add",
+ "ret-type": "91",
+ "meta-type": "command",
+ "arg-type": "90"
+ },
+ {
+ "name": "chardev-change",
+ "ret-type": "91",
+ "meta-type": "command",
+ "arg-type": "92"
+ },
+ {
+ "name": "chardev-remove",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "93"
+ },
+ {
+ "name": "chardev-send-break",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "94"
+ },
+ {
+ "name": "VSERPORT_CHANGE",
+ "meta-type": "event",
+ "arg-type": "95"
+ },
+ {
+ "name": "dump-guest-memory",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "96"
+ },
+ {
+ "name": "query-dump",
+ "ret-type": "97",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "DUMP_COMPLETED",
+ "meta-type": "event",
+ "arg-type": "98"
+ },
+ {
+ "name": "query-dump-guest-memory-capability",
+ "ret-type": "99",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "set_link",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "100"
+ },
+ {
+ "name": "netdev_add",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "101"
+ },
+ {
+ "name": "netdev_del",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "102"
+ },
+ {
+ "name": "query-rx-filter",
+ "ret-type": "[104]",
+ "meta-type": "command",
+ "arg-type": "103"
+ },
+ {
+ "name": "NIC_RX_FILTER_CHANGED",
+ "meta-type": "event",
+ "arg-type": "105"
+ },
+ {
+ "name": "announce-self",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "106"
+ },
+ {
+ "name": "FAILOVER_NEGOTIATED",
+ "meta-type": "event",
+ "arg-type": "107"
+ },
+ {
+ "name": "NETDEV_STREAM_CONNECTED",
+ "meta-type": "event",
+ "arg-type": "108"
+ },
+ {
+ "name": "NETDEV_STREAM_DISCONNECTED",
+ "meta-type": "event",
+ "arg-type": "109"
+ },
+ {
+ "name": "request-ebpf",
+ "ret-type": "111",
+ "meta-type": "command",
+ "arg-type": "110"
+ },
+ {
+ "name": "query-rocker",
+ "ret-type": "113",
+ "meta-type": "command",
+ "arg-type": "112"
+ },
+ {
+ "name": "query-rocker-ports",
+ "ret-type": "[115]",
+ "meta-type": "command",
+ "arg-type": "114"
+ },
+ {
+ "name": "query-rocker-of-dpa-flows",
+ "ret-type": "[117]",
+ "meta-type": "command",
+ "arg-type": "116"
+ },
+ {
+ "name": "query-rocker-of-dpa-groups",
+ "ret-type": "[119]",
+ "meta-type": "command",
+ "arg-type": "118"
+ },
+ {
+ "name": "query-tpm-models",
+ "ret-type": "[120]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-tpm-types",
+ "ret-type": "[121]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-tpm",
+ "ret-type": "[122]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "set_password",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "123"
+ },
+ {
+ "name": "expire_password",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "124"
+ },
+ {
+ "name": "screendump",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "125"
+ },
+ {
+ "name": "query-spice",
+ "ret-type": "126",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "SPICE_CONNECTED",
+ "meta-type": "event",
+ "arg-type": "127"
+ },
+ {
+ "name": "SPICE_INITIALIZED",
+ "meta-type": "event",
+ "arg-type": "128"
+ },
+ {
+ "name": "SPICE_DISCONNECTED",
+ "meta-type": "event",
+ "arg-type": "129"
+ },
+ {
+ "name": "SPICE_MIGRATE_COMPLETED",
+ "meta-type": "event",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-vnc",
+ "ret-type": "130",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-vnc-servers",
+ "ret-type": "[131]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "change-vnc-password",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "132"
+ },
+ {
+ "name": "VNC_CONNECTED",
+ "meta-type": "event",
+ "arg-type": "133"
+ },
+ {
+ "name": "VNC_INITIALIZED",
+ "meta-type": "event",
+ "arg-type": "134"
+ },
+ {
+ "name": "VNC_DISCONNECTED",
+ "meta-type": "event",
+ "arg-type": "135"
+ },
+ {
+ "name": "query-mice",
+ "ret-type": "[136]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "send-key",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "137"
+ },
+ {
+ "name": "input-send-event",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "138"
+ },
+ {
+ "name": "query-display-options",
+ "ret-type": "139",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "display-reload",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "140"
+ },
+ {
+ "name": "display-update",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "141"
+ },
+ {
+ "name": "client_migrate_info",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "142"
+ },
+ {
+ "name": "query-migrate",
+ "ret-type": "143",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "migrate-set-capabilities",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "144"
+ },
+ {
+ "name": "query-migrate-capabilities",
+ "ret-type": "[145]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "migrate-set-parameters",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "146"
+ },
+ {
+ "name": "query-migrate-parameters",
+ "ret-type": "147",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "migrate-start-postcopy",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "MIGRATION",
+ "meta-type": "event",
+ "arg-type": "148"
+ },
+ {
+ "name": "MIGRATION_PASS",
+ "meta-type": "event",
+ "arg-type": "149"
+ },
+ {
+ "name": "COLO_EXIT",
+ "meta-type": "event",
+ "arg-type": "150"
+ },
+ {
+ "name": "x-colo-lost-heartbeat",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "migrate_cancel",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "migrate-continue",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "151"
+ },
+ {
+ "name": "migrate",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "152"
+ },
+ {
+ "name": "migrate-incoming",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "153"
+ },
+ {
+ "name": "xen-save-devices-state",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "154"
+ },
+ {
+ "name": "xen-set-global-dirty-log",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "155"
+ },
+ {
+ "name": "xen-load-devices-state",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "156"
+ },
+ {
+ "name": "xen-set-replication",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "157"
+ },
+ {
+ "name": "query-xen-replication-status",
+ "ret-type": "158",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "xen-colo-do-checkpoint",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-colo-status",
+ "ret-type": "159",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "migrate-recover",
+ "ret-type": "0",
+ "allow-oob": true,
+ "meta-type": "command",
+ "arg-type": "160"
+ },
+ {
+ "name": "migrate-pause",
+ "ret-type": "0",
+ "allow-oob": true,
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "UNPLUG_PRIMARY",
+ "meta-type": "event",
+ "arg-type": "161"
+ },
+ {
+ "name": "calc-dirty-rate",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "162"
+ },
+ {
+ "name": "query-dirty-rate",
+ "ret-type": "164",
+ "meta-type": "command",
+ "arg-type": "163"
+ },
+ {
+ "name": "set-vcpu-dirty-limit",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "165"
+ },
+ {
+ "name": "cancel-vcpu-dirty-limit",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "166"
+ },
+ {
+ "name": "query-vcpu-dirty-limit",
+ "ret-type": "[167]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-migrationthreads",
+ "ret-type": "[168]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "snapshot-save",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "169"
+ },
+ {
+ "name": "snapshot-load",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "170"
+ },
+ {
+ "name": "snapshot-delete",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "171"
+ },
+ {
+ "name": "transaction",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "172"
+ },
+ {
+ "name": "trace-event-get-state",
+ "ret-type": "[174]",
+ "meta-type": "command",
+ "arg-type": "173"
+ },
+ {
+ "name": "trace-event-set-state",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "175"
+ },
+ {
+ "name": "qmp_capabilities",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "176"
+ },
+ {
+ "name": "query-version",
+ "ret-type": "177",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-commands",
+ "ret-type": "[178]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "quit",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-qmp-schema",
+ "ret-type": "[179]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "qom-list",
+ "ret-type": "[181]",
+ "meta-type": "command",
+ "arg-type": "180"
+ },
+ {
+ "name": "qom-get",
+ "ret-type": "any",
+ "meta-type": "command",
+ "arg-type": "182"
+ },
+ {
+ "name": "qom-set",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "183"
+ },
+ {
+ "name": "qom-list-types",
+ "ret-type": "[185]",
+ "meta-type": "command",
+ "arg-type": "184"
+ },
+ {
+ "name": "qom-list-properties",
+ "ret-type": "[181]",
+ "meta-type": "command",
+ "arg-type": "186"
+ },
+ {
+ "name": "object-add",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "187"
+ },
+ {
+ "name": "object-del",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "188"
+ },
+ {
+ "name": "device-list-properties",
+ "ret-type": "[181]",
+ "meta-type": "command",
+ "arg-type": "189"
+ },
+ {
+ "name": "device_add",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "190",
+ "features": [
+ "json-cli",
+ "json-cli-hotplug"
+ ]
+ },
+ {
+ "name": "device_del",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "191"
+ },
+ {
+ "name": "DEVICE_DELETED",
+ "meta-type": "event",
+ "arg-type": "192"
+ },
+ {
+ "name": "DEVICE_UNPLUG_GUEST_ERROR",
+ "meta-type": "event",
+ "arg-type": "193"
+ },
+ {
+ "name": "query-cpus-fast",
+ "ret-type": "[194]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-machines",
+ "ret-type": "[196]",
+ "meta-type": "command",
+ "arg-type": "195"
+ },
+ {
+ "name": "query-current-machine",
+ "ret-type": "197",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-target",
+ "ret-type": "198",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-uuid",
+ "ret-type": "199",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-vm-generation-id",
+ "ret-type": "200",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "system_reset",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "system_powerdown",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "system_wakeup",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "inject-nmi",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-kvm",
+ "ret-type": "201",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "memsave",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "202"
+ },
+ {
+ "name": "pmemsave",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "203"
+ },
+ {
+ "name": "query-memdev",
+ "ret-type": "[204]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-hotpluggable-cpus",
+ "ret-type": "[205]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "set-numa-node",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "206"
+ },
+ {
+ "name": "balloon",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "207"
+ },
+ {
+ "name": "query-balloon",
+ "ret-type": "208",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "BALLOON_CHANGE",
+ "meta-type": "event",
+ "arg-type": "209"
+ },
+ {
+ "name": "query-hv-balloon-status-report",
+ "ret-type": "210",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "HV_BALLOON_STATUS_REPORT",
+ "meta-type": "event",
+ "arg-type": "210"
+ },
+ {
+ "name": "query-memory-size-summary",
+ "ret-type": "211",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-memory-devices",
+ "ret-type": "[212]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "MEMORY_DEVICE_SIZE_CHANGE",
+ "meta-type": "event",
+ "arg-type": "213"
+ },
+ {
+ "name": "MEM_UNPLUG_ERROR",
+ "meta-type": "event",
+ "arg-type": "214",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "x-query-irq",
+ "ret-type": "215",
+ "meta-type": "command",
+ "arg-type": "0",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-query-jit",
+ "ret-type": "215",
+ "meta-type": "command",
+ "arg-type": "0",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-query-numa",
+ "ret-type": "215",
+ "meta-type": "command",
+ "arg-type": "0",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-query-opcount",
+ "ret-type": "215",
+ "meta-type": "command",
+ "arg-type": "0",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-query-ramblock",
+ "ret-type": "215",
+ "meta-type": "command",
+ "arg-type": "0",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-query-roms",
+ "ret-type": "215",
+ "meta-type": "command",
+ "arg-type": "0",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-query-usb",
+ "ret-type": "215",
+ "meta-type": "command",
+ "arg-type": "0",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "dumpdtb",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "216"
+ },
+ {
+ "name": "query-cpu-model-expansion",
+ "ret-type": "222",
+ "meta-type": "command",
+ "arg-type": "221"
+ },
+ {
+ "name": "query-cpu-definitions",
+ "ret-type": "[223]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-replay",
+ "ret-type": "227",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "replay-break",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "228"
+ },
+ {
+ "name": "replay-delete-break",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "replay-seek",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "229"
+ },
+ {
+ "name": "yank",
+ "ret-type": "0",
+ "allow-oob": true,
+ "meta-type": "command",
+ "arg-type": "230"
+ },
+ {
+ "name": "query-yank",
+ "ret-type": "[231]",
+ "allow-oob": true,
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "add_client",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "232"
+ },
+ {
+ "name": "query-name",
+ "ret-type": "233",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-iothreads",
+ "ret-type": "[234]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "stop",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "cont",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "x-exit-preconfig",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "human-monitor-command",
+ "ret-type": "str",
+ "meta-type": "command",
+ "arg-type": "235",
+ "features": [
+ "savevm-monitor-nodes"
+ ]
+ },
+ {
+ "name": "getfd",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "236"
+ },
+ {
+ "name": "closefd",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "238"
+ },
+ {
+ "name": "add-fd",
+ "ret-type": "240",
+ "meta-type": "command",
+ "arg-type": "239"
+ },
+ {
+ "name": "remove-fd",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "241"
+ },
+ {
+ "name": "query-fdsets",
+ "ret-type": "[242]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-command-line-options",
+ "ret-type": "[244]",
+ "meta-type": "command",
+ "arg-type": "243"
+ },
+ {
+ "name": "RTC_CHANGE",
+ "meta-type": "event",
+ "arg-type": "245"
+ },
+ {
+ "name": "VFU_CLIENT_HANGUP",
+ "meta-type": "event",
+ "arg-type": "246"
+ },
+ {
+ "name": "rtc-reset-reinjection",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-sev",
+ "ret-type": "247",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-sev-launch-measure",
+ "ret-type": "248",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-sev-capabilities",
+ "ret-type": "249",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "sev-inject-launch-secret",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "250"
+ },
+ {
+ "name": "query-sev-attestation-report",
+ "ret-type": "252",
+ "meta-type": "command",
+ "arg-type": "251"
+ },
+ {
+ "name": "query-sgx",
+ "ret-type": "255",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-sgx-capabilities",
+ "ret-type": "255",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "xen-event-list",
+ "ret-type": "[256]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "xen-event-inject",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "257"
+ },
+ {
+ "name": "query-audiodevs",
+ "ret-type": "[258]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-acpi-ospm-status",
+ "ret-type": "[259]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "ACPI_DEVICE_OST",
+ "meta-type": "event",
+ "arg-type": "260"
+ },
+ {
+ "name": "query-pci",
+ "ret-type": "[261]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-stats",
+ "ret-type": "[263]",
+ "meta-type": "command",
+ "arg-type": "262"
+ },
+ {
+ "name": "query-stats-schemas",
+ "ret-type": "[265]",
+ "meta-type": "command",
+ "arg-type": "264"
+ },
+ {
+ "name": "x-query-virtio",
+ "ret-type": "[266]",
+ "meta-type": "command",
+ "arg-type": "0",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-query-virtio-status",
+ "ret-type": "268",
+ "meta-type": "command",
+ "arg-type": "267",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-query-virtio-queue-status",
+ "ret-type": "270",
+ "meta-type": "command",
+ "arg-type": "269",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-query-virtio-vhost-queue-status",
+ "ret-type": "272",
+ "meta-type": "command",
+ "arg-type": "271",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-query-virtio-queue-element",
+ "ret-type": "274",
+ "meta-type": "command",
+ "arg-type": "273",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "VFIO_MIGRATION",
+ "meta-type": "event",
+ "arg-type": "275"
+ },
+ {
+ "name": "query-cryptodev",
+ "ret-type": "[276]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "cxl-inject-general-media-event",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "277"
+ },
+ {
+ "name": "cxl-inject-dram-event",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "278"
+ },
+ {
+ "name": "cxl-inject-memory-module-event",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "279"
+ },
+ {
+ "name": "cxl-inject-poison",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "280"
+ },
+ {
+ "name": "cxl-inject-uncorrectable-errors",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "281"
+ },
+ {
+ "name": "cxl-inject-correctable-error",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "282"
+ },
+ {
+ "name": "0",
+ "members": [],
+ "meta-type": "object"
+ },
+ {
+ "name": "1",
+ "members": [
+ {
+ "name": "running",
+ "type": "bool"
+ },
+ {
+ "name": "status",
+ "type": "283"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "2",
+ "members": [
+ {
+ "name": "guest",
+ "type": "bool"
+ },
+ {
+ "name": "reason",
+ "type": "284"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "3",
+ "members": [
+ {
+ "name": "guest",
+ "type": "bool"
+ },
+ {
+ "name": "reason",
+ "type": "284"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "4",
+ "members": [
+ {
+ "name": "action",
+ "type": "285"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "5",
+ "members": [
+ {
+ "name": "action",
+ "type": "285"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "6",
+ "members": [
+ {
+ "name": "reboot",
+ "default": null,
+ "type": "286"
+ },
+ {
+ "name": "shutdown",
+ "default": null,
+ "type": "287"
+ },
+ {
+ "name": "panic",
+ "default": null,
+ "type": "288"
+ },
+ {
+ "name": "watchdog",
+ "default": null,
+ "type": "285"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "7",
+ "members": [
+ {
+ "name": "action",
+ "type": "289"
+ },
+ {
+ "name": "info",
+ "default": null,
+ "type": "290"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "8",
+ "members": [
+ {
+ "name": "action",
+ "type": "289"
+ },
+ {
+ "name": "info",
+ "default": null,
+ "type": "290"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "9",
+ "members": [
+ {
+ "name": "recipient",
+ "type": "291"
+ },
+ {
+ "name": "action",
+ "type": "292"
+ },
+ {
+ "name": "flags",
+ "type": "293"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "10",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "status",
+ "type": "294"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "11",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "12",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "13",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "14",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "15",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "16",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[17]",
+ "element-type": "17",
+ "meta-type": "array"
+ },
+ {
+ "name": "17",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "type",
+ "type": "295"
+ },
+ {
+ "name": "status",
+ "type": "294"
+ },
+ {
+ "name": "current-progress",
+ "type": "int"
+ },
+ {
+ "name": "total-progress",
+ "type": "int"
+ },
+ {
+ "name": "error",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[18]",
+ "element-type": "18",
+ "meta-type": "array"
+ },
+ {
+ "name": "18",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "connected",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "19",
+ "members": [
+ {
+ "name": "device",
+ "default": null,
+ "type": "str",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "force",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "20",
+ "members": [
+ {
+ "name": "device",
+ "default": null,
+ "type": "str",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "force",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "21",
+ "members": [
+ {
+ "name": "device",
+ "default": null,
+ "type": "str",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "22",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "23",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "node-name",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "24",
+ "members": [
+ {
+ "name": "device",
+ "default": null,
+ "type": "str",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "filename",
+ "type": "str"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "force",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "read-only-mode",
+ "default": null,
+ "type": "296"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "25",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "tray-open",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "26",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "connected",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "27",
+ "members": [
+ {
+ "name": "device",
+ "default": null,
+ "type": "str",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "bps",
+ "type": "int"
+ },
+ {
+ "name": "bps_rd",
+ "type": "int"
+ },
+ {
+ "name": "bps_wr",
+ "type": "int"
+ },
+ {
+ "name": "iops",
+ "type": "int"
+ },
+ {
+ "name": "iops_rd",
+ "type": "int"
+ },
+ {
+ "name": "iops_wr",
+ "type": "int"
+ },
+ {
+ "name": "bps_max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps_rd_max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps_wr_max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops_max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops_rd_max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops_wr_max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps_max_length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps_rd_max_length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps_wr_max_length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops_max_length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops_rd_max_length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops_wr_max_length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops_size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "group",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "28",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "boundaries",
+ "default": null,
+ "type": "[int]"
+ },
+ {
+ "name": "boundaries-read",
+ "default": null,
+ "type": "[int]"
+ },
+ {
+ "name": "boundaries-write",
+ "default": null,
+ "type": "[int]"
+ },
+ {
+ "name": "boundaries-zap",
+ "default": null,
+ "type": "[int]"
+ },
+ {
+ "name": "boundaries-flush",
+ "default": null,
+ "type": "[int]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[29]",
+ "element-type": "29",
+ "meta-type": "array"
+ },
+ {
+ "name": "29",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "qdev",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "type",
+ "type": "str"
+ },
+ {
+ "name": "removable",
+ "type": "bool"
+ },
+ {
+ "name": "locked",
+ "type": "bool"
+ },
+ {
+ "name": "inserted",
+ "default": null,
+ "type": "41"
+ },
+ {
+ "name": "tray_open",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "io-status",
+ "default": null,
+ "type": "297"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "30",
+ "members": [
+ {
+ "name": "query-nodes",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[31]",
+ "element-type": "31",
+ "meta-type": "array"
+ },
+ {
+ "name": "31",
+ "members": [
+ {
+ "name": "device",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "qdev",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "node-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "stats",
+ "type": "298"
+ },
+ {
+ "name": "driver-specific",
+ "default": null,
+ "type": "299"
+ },
+ {
+ "name": "parent",
+ "default": null,
+ "type": "31"
+ },
+ {
+ "name": "backing",
+ "default": null,
+ "type": "31"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[32]",
+ "element-type": "32",
+ "meta-type": "array"
+ },
+ {
+ "name": "32",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "mirror",
+ "type": "300"
+ },
+ {
+ "case": "commit",
+ "type": "0"
+ },
+ {
+ "case": "stream",
+ "type": "0"
+ },
+ {
+ "case": "backup",
+ "type": "0"
+ },
+ {
+ "case": "create",
+ "type": "0"
+ },
+ {
+ "case": "amend",
+ "type": "0"
+ },
+ {
+ "case": "snapshot-load",
+ "type": "0"
+ },
+ {
+ "case": "snapshot-save",
+ "type": "0"
+ },
+ {
+ "case": "snapshot-delete",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "295"
+ },
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "len",
+ "type": "int"
+ },
+ {
+ "name": "offset",
+ "type": "int"
+ },
+ {
+ "name": "busy",
+ "type": "bool"
+ },
+ {
+ "name": "paused",
+ "type": "bool"
+ },
+ {
+ "name": "speed",
+ "type": "int"
+ },
+ {
+ "name": "io-status",
+ "type": "297"
+ },
+ {
+ "name": "ready",
+ "type": "bool"
+ },
+ {
+ "name": "status",
+ "type": "294"
+ },
+ {
+ "name": "auto-finalize",
+ "type": "bool"
+ },
+ {
+ "name": "auto-dismiss",
+ "type": "bool"
+ },
+ {
+ "name": "error",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "33",
+ "members": [
+ {
+ "name": "device",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "node-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "34",
+ "members": [
+ {
+ "name": "device",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "node-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "snapshot-file",
+ "type": "str"
+ },
+ {
+ "name": "snapshot-node-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "mode",
+ "default": null,
+ "type": "301"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "35",
+ "members": [
+ {
+ "name": "node",
+ "type": "str"
+ },
+ {
+ "name": "overlay",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "36",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "image-node-name",
+ "type": "str"
+ },
+ {
+ "name": "backing-file",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "37",
+ "members": [
+ {
+ "name": "job-id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "base-node",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "base",
+ "default": null,
+ "type": "str",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "top-node",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "top",
+ "default": null,
+ "type": "str",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "backing-file",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "backing-mask-protocol",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "speed",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "on-error",
+ "default": null,
+ "type": "302"
+ },
+ {
+ "name": "filter-node-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "auto-finalize",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "auto-dismiss",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "38",
+ "members": [
+ {
+ "name": "job-id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "sync",
+ "type": "303"
+ },
+ {
+ "name": "speed",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bitmap",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "bitmap-mode",
+ "default": null,
+ "type": "304"
+ },
+ {
+ "name": "compress",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "on-source-error",
+ "default": null,
+ "type": "302"
+ },
+ {
+ "name": "on-target-error",
+ "default": null,
+ "type": "302"
+ },
+ {
+ "name": "auto-finalize",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "auto-dismiss",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "filter-node-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "x-perf",
+ "default": null,
+ "type": "305",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "target",
+ "type": "str"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "mode",
+ "default": null,
+ "type": "301"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "39",
+ "members": [
+ {
+ "name": "job-id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "sync",
+ "type": "303"
+ },
+ {
+ "name": "speed",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bitmap",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "bitmap-mode",
+ "default": null,
+ "type": "304"
+ },
+ {
+ "name": "compress",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "on-source-error",
+ "default": null,
+ "type": "302"
+ },
+ {
+ "name": "on-target-error",
+ "default": null,
+ "type": "302"
+ },
+ {
+ "name": "auto-finalize",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "auto-dismiss",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "filter-node-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "x-perf",
+ "default": null,
+ "type": "305",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "target",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "40",
+ "members": [
+ {
+ "name": "flat",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[41]",
+ "element-type": "41",
+ "meta-type": "array"
+ },
+ {
+ "name": "41",
+ "members": [
+ {
+ "name": "file",
+ "type": "str"
+ },
+ {
+ "name": "node-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "ro",
+ "type": "bool"
+ },
+ {
+ "name": "drv",
+ "type": "str"
+ },
+ {
+ "name": "backing_file",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "backing_file_depth",
+ "type": "int"
+ },
+ {
+ "name": "encrypted",
+ "type": "bool"
+ },
+ {
+ "name": "detect_zeroes",
+ "type": "306"
+ },
+ {
+ "name": "bps",
+ "type": "int"
+ },
+ {
+ "name": "bps_rd",
+ "type": "int"
+ },
+ {
+ "name": "bps_wr",
+ "type": "int"
+ },
+ {
+ "name": "iops",
+ "type": "int"
+ },
+ {
+ "name": "iops_rd",
+ "type": "int"
+ },
+ {
+ "name": "iops_wr",
+ "type": "int"
+ },
+ {
+ "name": "image",
+ "type": "307"
+ },
+ {
+ "name": "bps_max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps_rd_max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps_wr_max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops_max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops_rd_max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops_wr_max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps_max_length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps_rd_max_length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps_wr_max_length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops_max_length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops_rd_max_length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops_wr_max_length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops_size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "group",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "cache",
+ "type": "308"
+ },
+ {
+ "name": "write_threshold",
+ "type": "int"
+ },
+ {
+ "name": "dirty-bitmaps",
+ "default": null,
+ "type": "[309]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "42",
+ "members": [
+ {
+ "name": "nodes",
+ "type": "[310]"
+ },
+ {
+ "name": "edges",
+ "type": "[311]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "43",
+ "members": [
+ {
+ "name": "job-id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "target",
+ "type": "str"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "node-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "replaces",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "sync",
+ "type": "303"
+ },
+ {
+ "name": "mode",
+ "default": null,
+ "type": "301"
+ },
+ {
+ "name": "speed",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "granularity",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "buf-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "on-source-error",
+ "default": null,
+ "type": "302"
+ },
+ {
+ "name": "on-target-error",
+ "default": null,
+ "type": "302"
+ },
+ {
+ "name": "unmap",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "copy-mode",
+ "default": null,
+ "type": "312"
+ },
+ {
+ "name": "auto-finalize",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "auto-dismiss",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "44",
+ "members": [
+ {
+ "name": "node",
+ "type": "str"
+ },
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "granularity",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "persistent",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "disabled",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "45",
+ "members": [
+ {
+ "name": "node",
+ "type": "str"
+ },
+ {
+ "name": "name",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "46",
+ "members": [
+ {
+ "name": "node",
+ "type": "str"
+ },
+ {
+ "name": "target",
+ "type": "str"
+ },
+ {
+ "name": "bitmaps",
+ "type": "[313]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "47",
+ "members": [
+ {
+ "name": "sha256",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "48",
+ "members": [
+ {
+ "name": "job-id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "target",
+ "type": "str"
+ },
+ {
+ "name": "replaces",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "sync",
+ "type": "303"
+ },
+ {
+ "name": "speed",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "granularity",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "buf-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "on-source-error",
+ "default": null,
+ "type": "302"
+ },
+ {
+ "name": "on-target-error",
+ "default": null,
+ "type": "302"
+ },
+ {
+ "name": "filter-node-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "copy-mode",
+ "default": null,
+ "type": "312"
+ },
+ {
+ "name": "auto-finalize",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "auto-dismiss",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "49",
+ "members": [
+ {
+ "name": "job-id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "base",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "base-node",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "backing-file",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "backing-mask-protocol",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "bottom",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "speed",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "on-error",
+ "default": null,
+ "type": "302"
+ },
+ {
+ "name": "filter-node-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "auto-finalize",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "auto-dismiss",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "50",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "speed",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "51",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "force",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "52",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "53",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "54",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "55",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "56",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "57",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "mirror",
+ "type": "314"
+ },
+ {
+ "case": "commit",
+ "type": "0"
+ },
+ {
+ "case": "stream",
+ "type": "0"
+ },
+ {
+ "case": "backup",
+ "type": "0"
+ },
+ {
+ "case": "create",
+ "type": "0"
+ },
+ {
+ "case": "amend",
+ "type": "0"
+ },
+ {
+ "case": "snapshot-load",
+ "type": "0"
+ },
+ {
+ "case": "snapshot-save",
+ "type": "0"
+ },
+ {
+ "case": "snapshot-delete",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "type",
+ "type": "295"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "58",
+ "tag": "driver",
+ "variants": [
+ {
+ "case": "blkdebug",
+ "type": "318"
+ },
+ {
+ "case": "blklogwrites",
+ "type": "319"
+ },
+ {
+ "case": "blkverify",
+ "type": "320"
+ },
+ {
+ "case": "blkreplay",
+ "type": "321"
+ },
+ {
+ "case": "bochs",
+ "type": "322"
+ },
+ {
+ "case": "cloop",
+ "type": "322"
+ },
+ {
+ "case": "compress",
+ "type": "322"
+ },
+ {
+ "case": "copy-before-write",
+ "type": "323"
+ },
+ {
+ "case": "copy-on-read",
+ "type": "324"
+ },
+ {
+ "case": "dmg",
+ "type": "322"
+ },
+ {
+ "case": "file",
+ "type": "325"
+ },
+ {
+ "case": "ftp",
+ "type": "326"
+ },
+ {
+ "case": "ftps",
+ "type": "327"
+ },
+ {
+ "case": "gluster",
+ "type": "328"
+ },
+ {
+ "case": "host_cdrom",
+ "type": "325"
+ },
+ {
+ "case": "host_device",
+ "type": "325"
+ },
+ {
+ "case": "http",
+ "type": "329"
+ },
+ {
+ "case": "https",
+ "type": "330"
+ },
+ {
+ "case": "io_uring",
+ "type": "331"
+ },
+ {
+ "case": "iscsi",
+ "type": "332"
+ },
+ {
+ "case": "luks",
+ "type": "333"
+ },
+ {
+ "case": "nbd",
+ "type": "334"
+ },
+ {
+ "case": "nfs",
+ "type": "335"
+ },
+ {
+ "case": "null-aio",
+ "type": "336"
+ },
+ {
+ "case": "null-co",
+ "type": "336"
+ },
+ {
+ "case": "nvme",
+ "type": "337"
+ },
+ {
+ "case": "nvme-io_uring",
+ "type": "338"
+ },
+ {
+ "case": "parallels",
+ "type": "322"
+ },
+ {
+ "case": "preallocate",
+ "type": "339"
+ },
+ {
+ "case": "qcow2",
+ "type": "340"
+ },
+ {
+ "case": "qcow",
+ "type": "341"
+ },
+ {
+ "case": "qed",
+ "type": "342"
+ },
+ {
+ "case": "quorum",
+ "type": "343"
+ },
+ {
+ "case": "raw",
+ "type": "344"
+ },
+ {
+ "case": "rbd",
+ "type": "345"
+ },
+ {
+ "case": "replication",
+ "type": "346"
+ },
+ {
+ "case": "snapshot-access",
+ "type": "322"
+ },
+ {
+ "case": "ssh",
+ "type": "347"
+ },
+ {
+ "case": "throttle",
+ "type": "348"
+ },
+ {
+ "case": "vdi",
+ "type": "322"
+ },
+ {
+ "case": "vhdx",
+ "type": "322"
+ },
+ {
+ "case": "virtio-blk-vfio-pci",
+ "type": "349"
+ },
+ {
+ "case": "virtio-blk-vhost-user",
+ "type": "350"
+ },
+ {
+ "case": "virtio-blk-vhost-vdpa",
+ "type": "351"
+ },
+ {
+ "case": "vmdk",
+ "type": "342"
+ },
+ {
+ "case": "vpc",
+ "type": "322"
+ },
+ {
+ "case": "vvfat",
+ "type": "352"
+ }
+ ],
+ "members": [
+ {
+ "name": "driver",
+ "type": "315"
+ },
+ {
+ "name": "node-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "discard",
+ "default": null,
+ "type": "316"
+ },
+ {
+ "name": "cache",
+ "default": null,
+ "type": "317"
+ },
+ {
+ "name": "read-only",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "auto-read-only",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "force-share",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "detect-zeroes",
+ "default": null,
+ "type": "306"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "59",
+ "members": [
+ {
+ "name": "options",
+ "type": "[58]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "60",
+ "members": [
+ {
+ "name": "node-name",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "61",
+ "members": [
+ {
+ "name": "job-id",
+ "type": "str"
+ },
+ {
+ "name": "options",
+ "type": "353"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "62",
+ "members": [
+ {
+ "name": "job-id",
+ "type": "str"
+ },
+ {
+ "name": "node-name",
+ "type": "str"
+ },
+ {
+ "name": "options",
+ "type": "354"
+ },
+ {
+ "name": "force",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "63",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "node-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "msg",
+ "type": "str"
+ },
+ {
+ "name": "offset",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "fatal",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "64",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "node-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "operation",
+ "type": "355"
+ },
+ {
+ "name": "action",
+ "type": "356"
+ },
+ {
+ "name": "nospace",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "reason",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "65",
+ "members": [
+ {
+ "name": "type",
+ "type": "295"
+ },
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "len",
+ "type": "int"
+ },
+ {
+ "name": "offset",
+ "type": "int"
+ },
+ {
+ "name": "speed",
+ "type": "int"
+ },
+ {
+ "name": "error",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "66",
+ "members": [
+ {
+ "name": "type",
+ "type": "295"
+ },
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "len",
+ "type": "int"
+ },
+ {
+ "name": "offset",
+ "type": "int"
+ },
+ {
+ "name": "speed",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "67",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "operation",
+ "type": "355"
+ },
+ {
+ "name": "action",
+ "type": "356"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "68",
+ "members": [
+ {
+ "name": "type",
+ "type": "295"
+ },
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "len",
+ "type": "int"
+ },
+ {
+ "name": "offset",
+ "type": "int"
+ },
+ {
+ "name": "speed",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "69",
+ "members": [
+ {
+ "name": "type",
+ "type": "295"
+ },
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "70",
+ "members": [
+ {
+ "name": "node-name",
+ "type": "str"
+ },
+ {
+ "name": "amount-exceeded",
+ "type": "int"
+ },
+ {
+ "name": "write-threshold",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "71",
+ "members": [
+ {
+ "name": "node-name",
+ "type": "str"
+ },
+ {
+ "name": "write-threshold",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "72",
+ "members": [
+ {
+ "name": "parent",
+ "type": "str"
+ },
+ {
+ "name": "child",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "node",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "73",
+ "members": [
+ {
+ "name": "node-name",
+ "type": "str"
+ },
+ {
+ "name": "iothread",
+ "type": "357"
+ },
+ {
+ "name": "force",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "74",
+ "members": [
+ {
+ "name": "reference",
+ "type": "str"
+ },
+ {
+ "name": "sector-num",
+ "type": "int"
+ },
+ {
+ "name": "sectors-count",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "75",
+ "members": [
+ {
+ "name": "type",
+ "type": "358"
+ },
+ {
+ "name": "error",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "node-name",
+ "type": "str"
+ },
+ {
+ "name": "sector-num",
+ "type": "int"
+ },
+ {
+ "name": "sectors-count",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "76",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "name",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "77",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "name",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "78",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "vm-state-size",
+ "type": "int"
+ },
+ {
+ "name": "date-sec",
+ "type": "int"
+ },
+ {
+ "name": "date-nsec",
+ "type": "int"
+ },
+ {
+ "name": "vm-clock-sec",
+ "type": "int"
+ },
+ {
+ "name": "vm-clock-nsec",
+ "type": "int"
+ },
+ {
+ "name": "icount",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "79",
+ "members": [
+ {
+ "name": "addr",
+ "type": "359"
+ },
+ {
+ "name": "tls-creds",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "tls-authz",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "max-connections",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "80",
+ "members": [
+ {
+ "name": "name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "description",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "writable",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "bitmap",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "81",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "mode",
+ "default": null,
+ "type": "360"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "82",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "nbd",
+ "type": "362"
+ },
+ {
+ "case": "vhost-user-blk",
+ "type": "363"
+ },
+ {
+ "case": "fuse",
+ "type": "364"
+ },
+ {
+ "case": "vduse-blk",
+ "type": "365"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "361"
+ },
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "fixed-iothread",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "iothread",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "node-name",
+ "type": "str"
+ },
+ {
+ "name": "writable",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "writethrough",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "83",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "mode",
+ "default": null,
+ "type": "360"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "84",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[85]",
+ "element-type": "85",
+ "meta-type": "array"
+ },
+ {
+ "name": "85",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "type",
+ "type": "361"
+ },
+ {
+ "name": "node-name",
+ "type": "str"
+ },
+ {
+ "name": "shutting-down",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[86]",
+ "element-type": "86",
+ "meta-type": "array"
+ },
+ {
+ "name": "86",
+ "members": [
+ {
+ "name": "label",
+ "type": "str"
+ },
+ {
+ "name": "filename",
+ "type": "str"
+ },
+ {
+ "name": "frontend-open",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[87]",
+ "element-type": "87",
+ "meta-type": "array"
+ },
+ {
+ "name": "87",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "88",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "data",
+ "type": "str"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "366"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "89",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "366"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "str",
+ "json-type": "string",
+ "meta-type": "builtin"
+ },
+ {
+ "name": "90",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "backend",
+ "type": "367"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "91",
+ "members": [
+ {
+ "name": "pty",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "92",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "backend",
+ "type": "367"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "93",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "94",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "95",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "open",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "96",
+ "members": [
+ {
+ "name": "paging",
+ "type": "bool"
+ },
+ {
+ "name": "protocol",
+ "type": "str"
+ },
+ {
+ "name": "detach",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "begin",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "368"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "97",
+ "members": [
+ {
+ "name": "status",
+ "type": "369"
+ },
+ {
+ "name": "completed",
+ "type": "int"
+ },
+ {
+ "name": "total",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "98",
+ "members": [
+ {
+ "name": "result",
+ "type": "97"
+ },
+ {
+ "name": "error",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "99",
+ "members": [
+ {
+ "name": "formats",
+ "type": "[368]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "100",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "up",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "101",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "nic",
+ "type": "371"
+ },
+ {
+ "case": "user",
+ "type": "372"
+ },
+ {
+ "case": "tap",
+ "type": "373"
+ },
+ {
+ "case": "l2tpv3",
+ "type": "374"
+ },
+ {
+ "case": "socket",
+ "type": "375"
+ },
+ {
+ "case": "stream",
+ "type": "376"
+ },
+ {
+ "case": "dgram",
+ "type": "377"
+ },
+ {
+ "case": "vde",
+ "type": "378"
+ },
+ {
+ "case": "bridge",
+ "type": "379"
+ },
+ {
+ "case": "hubport",
+ "type": "380"
+ },
+ {
+ "case": "netmap",
+ "type": "381"
+ },
+ {
+ "case": "vhost-user",
+ "type": "383"
+ },
+ {
+ "case": "vhost-vdpa",
+ "type": "384"
+ },
+ {
+ "case": "none",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "type",
+ "type": "370"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "102",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "103",
+ "members": [
+ {
+ "name": "name",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[104]",
+ "element-type": "104",
+ "meta-type": "array"
+ },
+ {
+ "name": "104",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "promiscuous",
+ "type": "bool"
+ },
+ {
+ "name": "multicast",
+ "type": "388"
+ },
+ {
+ "name": "unicast",
+ "type": "388"
+ },
+ {
+ "name": "vlan",
+ "type": "388"
+ },
+ {
+ "name": "broadcast-allowed",
+ "type": "bool"
+ },
+ {
+ "name": "multicast-overflow",
+ "type": "bool"
+ },
+ {
+ "name": "unicast-overflow",
+ "type": "bool"
+ },
+ {
+ "name": "main-mac",
+ "type": "str"
+ },
+ {
+ "name": "vlan-table",
+ "type": "[int]"
+ },
+ {
+ "name": "unicast-table",
+ "type": "[str]"
+ },
+ {
+ "name": "multicast-table",
+ "type": "[str]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "105",
+ "members": [
+ {
+ "name": "name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "path",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "106",
+ "members": [
+ {
+ "name": "initial",
+ "type": "int"
+ },
+ {
+ "name": "max",
+ "type": "int"
+ },
+ {
+ "name": "rounds",
+ "type": "int"
+ },
+ {
+ "name": "step",
+ "type": "int"
+ },
+ {
+ "name": "interfaces",
+ "default": null,
+ "type": "[str]"
+ },
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "107",
+ "members": [
+ {
+ "name": "device-id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "108",
+ "members": [
+ {
+ "name": "netdev-id",
+ "type": "str"
+ },
+ {
+ "name": "addr",
+ "type": "389"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "109",
+ "members": [
+ {
+ "name": "netdev-id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "110",
+ "members": [
+ {
+ "name": "id",
+ "type": "390"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "111",
+ "members": [
+ {
+ "name": "object",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "112",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "113",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "id",
+ "type": "int"
+ },
+ {
+ "name": "ports",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "114",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[115]",
+ "element-type": "115",
+ "meta-type": "array"
+ },
+ {
+ "name": "115",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "enabled",
+ "type": "bool"
+ },
+ {
+ "name": "link-up",
+ "type": "bool"
+ },
+ {
+ "name": "speed",
+ "type": "int"
+ },
+ {
+ "name": "duplex",
+ "type": "391"
+ },
+ {
+ "name": "autoneg",
+ "type": "392"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "116",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "tbl-id",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[117]",
+ "element-type": "117",
+ "meta-type": "array"
+ },
+ {
+ "name": "117",
+ "members": [
+ {
+ "name": "cookie",
+ "type": "int"
+ },
+ {
+ "name": "hits",
+ "type": "int"
+ },
+ {
+ "name": "key",
+ "type": "393"
+ },
+ {
+ "name": "mask",
+ "type": "394"
+ },
+ {
+ "name": "action",
+ "type": "395"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "118",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "type",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[119]",
+ "element-type": "119",
+ "meta-type": "array"
+ },
+ {
+ "name": "119",
+ "members": [
+ {
+ "name": "id",
+ "type": "int"
+ },
+ {
+ "name": "type",
+ "type": "int"
+ },
+ {
+ "name": "vlan-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "pport",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "index",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "out-pport",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "group-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "set-vlan-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "pop-vlan",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "group-ids",
+ "default": null,
+ "type": "[int]"
+ },
+ {
+ "name": "set-eth-src",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "set-eth-dst",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "ttl-check",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[120]",
+ "element-type": "120",
+ "meta-type": "array"
+ },
+ {
+ "name": "120",
+ "members": [
+ {
+ "name": "tpm-tis"
+ },
+ {
+ "name": "tpm-crb"
+ },
+ {
+ "name": "tpm-spapr"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "tpm-tis",
+ "tpm-crb",
+ "tpm-spapr"
+ ]
+ },
+ {
+ "name": "[121]",
+ "element-type": "121",
+ "meta-type": "array"
+ },
+ {
+ "name": "121",
+ "members": [
+ {
+ "name": "passthrough"
+ },
+ {
+ "name": "emulator"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "passthrough",
+ "emulator"
+ ]
+ },
+ {
+ "name": "[122]",
+ "element-type": "122",
+ "meta-type": "array"
+ },
+ {
+ "name": "122",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "model",
+ "type": "120"
+ },
+ {
+ "name": "options",
+ "type": "396"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "123",
+ "tag": "protocol",
+ "variants": [
+ {
+ "case": "vnc",
+ "type": "399"
+ },
+ {
+ "case": "spice",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "protocol",
+ "type": "397"
+ },
+ {
+ "name": "password",
+ "type": "str"
+ },
+ {
+ "name": "connected",
+ "default": null,
+ "type": "398"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "124",
+ "tag": "protocol",
+ "variants": [
+ {
+ "case": "vnc",
+ "type": "400"
+ },
+ {
+ "case": "spice",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "protocol",
+ "type": "397"
+ },
+ {
+ "name": "time",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "125",
+ "members": [
+ {
+ "name": "filename",
+ "type": "str"
+ },
+ {
+ "name": "device",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "head",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "401"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "126",
+ "members": [
+ {
+ "name": "enabled",
+ "type": "bool"
+ },
+ {
+ "name": "migrated",
+ "type": "bool"
+ },
+ {
+ "name": "host",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "port",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "tls-port",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "auth",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "compiled-version",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "mouse-mode",
+ "type": "402"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "[403]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "127",
+ "members": [
+ {
+ "name": "server",
+ "type": "404"
+ },
+ {
+ "name": "client",
+ "type": "404"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "128",
+ "members": [
+ {
+ "name": "server",
+ "type": "405"
+ },
+ {
+ "name": "client",
+ "type": "403"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "129",
+ "members": [
+ {
+ "name": "server",
+ "type": "404"
+ },
+ {
+ "name": "client",
+ "type": "404"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "130",
+ "members": [
+ {
+ "name": "enabled",
+ "type": "bool"
+ },
+ {
+ "name": "host",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "family",
+ "default": null,
+ "type": "406"
+ },
+ {
+ "name": "service",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "auth",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "clients",
+ "default": null,
+ "type": "[407]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[131]",
+ "element-type": "131",
+ "meta-type": "array"
+ },
+ {
+ "name": "131",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "server",
+ "type": "[408]"
+ },
+ {
+ "name": "clients",
+ "type": "[407]"
+ },
+ {
+ "name": "auth",
+ "type": "409"
+ },
+ {
+ "name": "vencrypt",
+ "default": null,
+ "type": "410"
+ },
+ {
+ "name": "display",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "132",
+ "members": [
+ {
+ "name": "password",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "133",
+ "members": [
+ {
+ "name": "server",
+ "type": "411"
+ },
+ {
+ "name": "client",
+ "type": "412"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "134",
+ "members": [
+ {
+ "name": "server",
+ "type": "411"
+ },
+ {
+ "name": "client",
+ "type": "407"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "135",
+ "members": [
+ {
+ "name": "server",
+ "type": "411"
+ },
+ {
+ "name": "client",
+ "type": "407"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[136]",
+ "element-type": "136",
+ "meta-type": "array"
+ },
+ {
+ "name": "136",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "index",
+ "type": "int"
+ },
+ {
+ "name": "current",
+ "type": "bool"
+ },
+ {
+ "name": "absolute",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "137",
+ "members": [
+ {
+ "name": "keys",
+ "type": "[413]"
+ },
+ {
+ "name": "hold-time",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "138",
+ "members": [
+ {
+ "name": "device",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "head",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "events",
+ "type": "[414]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "139",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "curses",
+ "type": "419"
+ },
+ {
+ "case": "egl-headless",
+ "type": "420"
+ },
+ {
+ "case": "dbus",
+ "type": "421"
+ },
+ {
+ "case": "sdl",
+ "type": "422"
+ },
+ {
+ "case": "default",
+ "type": "0"
+ },
+ {
+ "case": "none",
+ "type": "0"
+ },
+ {
+ "case": "spice-app",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "415"
+ },
+ {
+ "name": "full-screen",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "window-close",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "show-cursor",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "gl",
+ "default": null,
+ "type": "416"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "140",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "vnc",
+ "type": "424"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "423"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "141",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "vnc",
+ "type": "426"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "425"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "142",
+ "members": [
+ {
+ "name": "protocol",
+ "type": "str"
+ },
+ {
+ "name": "hostname",
+ "type": "str"
+ },
+ {
+ "name": "port",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "tls-port",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "cert-subject",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "143",
+ "members": [
+ {
+ "name": "status",
+ "default": null,
+ "type": "427"
+ },
+ {
+ "name": "ram",
+ "default": null,
+ "type": "428"
+ },
+ {
+ "name": "vfio",
+ "default": null,
+ "type": "429"
+ },
+ {
+ "name": "xbzrle-cache",
+ "default": null,
+ "type": "430"
+ },
+ {
+ "name": "total-time",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "expected-downtime",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "downtime",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "setup-time",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "cpu-throttle-percentage",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "error-desc",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "blocked-reasons",
+ "default": null,
+ "type": "[str]"
+ },
+ {
+ "name": "postcopy-blocktime",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "postcopy-vcpu-blocktime",
+ "default": null,
+ "type": "[int]"
+ },
+ {
+ "name": "socket-address",
+ "default": null,
+ "type": "[389]"
+ },
+ {
+ "name": "dirty-limit-throttle-time-per-round",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "dirty-limit-ring-full-time",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "144",
+ "members": [
+ {
+ "name": "capabilities",
+ "type": "[145]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[145]",
+ "element-type": "145",
+ "meta-type": "array"
+ },
+ {
+ "name": "145",
+ "members": [
+ {
+ "name": "capability",
+ "type": "431"
+ },
+ {
+ "name": "state",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "146",
+ "members": [
+ {
+ "name": "announce-initial",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "announce-max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "announce-rounds",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "announce-step",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "throttle-trigger-threshold",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "cpu-throttle-initial",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "cpu-throttle-increment",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "cpu-throttle-tailslow",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "tls-creds",
+ "default": null,
+ "type": "357"
+ },
+ {
+ "name": "tls-hostname",
+ "default": null,
+ "type": "357"
+ },
+ {
+ "name": "tls-authz",
+ "default": null,
+ "type": "357"
+ },
+ {
+ "name": "max-bandwidth",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "avail-switchover-bandwidth",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "downtime-limit",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "x-checkpoint-delay",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "multifd-channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "xbzrle-cache-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "max-postcopy-bandwidth",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "max-cpu-throttle",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "multifd-compression",
+ "default": null,
+ "type": "432"
+ },
+ {
+ "name": "multifd-zlib-level",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "multifd-zstd-level",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "block-bitmap-mapping",
+ "default": null,
+ "type": "[433]"
+ },
+ {
+ "name": "x-vcpu-dirty-limit-period",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "vcpu-dirty-limit",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "mode",
+ "default": null,
+ "type": "434"
+ },
+ {
+ "name": "zero-page-detection",
+ "default": null,
+ "type": "435"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "147",
+ "members": [
+ {
+ "name": "announce-initial",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "announce-max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "announce-rounds",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "announce-step",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "throttle-trigger-threshold",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "cpu-throttle-initial",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "cpu-throttle-increment",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "cpu-throttle-tailslow",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "tls-creds",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "tls-hostname",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "tls-authz",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "max-bandwidth",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "avail-switchover-bandwidth",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "downtime-limit",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "x-checkpoint-delay",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "multifd-channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "xbzrle-cache-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "max-postcopy-bandwidth",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "max-cpu-throttle",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "multifd-compression",
+ "default": null,
+ "type": "432"
+ },
+ {
+ "name": "multifd-zlib-level",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "multifd-zstd-level",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "block-bitmap-mapping",
+ "default": null,
+ "type": "[433]"
+ },
+ {
+ "name": "x-vcpu-dirty-limit-period",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "vcpu-dirty-limit",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "mode",
+ "default": null,
+ "type": "434"
+ },
+ {
+ "name": "zero-page-detection",
+ "default": null,
+ "type": "435"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "148",
+ "members": [
+ {
+ "name": "status",
+ "type": "427"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "149",
+ "members": [
+ {
+ "name": "pass",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "150",
+ "members": [
+ {
+ "name": "mode",
+ "type": "436"
+ },
+ {
+ "name": "reason",
+ "type": "437"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "151",
+ "members": [
+ {
+ "name": "state",
+ "type": "427"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "152",
+ "members": [
+ {
+ "name": "uri",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "[438]"
+ },
+ {
+ "name": "detach",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "resume",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "153",
+ "members": [
+ {
+ "name": "uri",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "[438]"
+ },
+ {
+ "name": "exit-on-error",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "154",
+ "members": [
+ {
+ "name": "filename",
+ "type": "str"
+ },
+ {
+ "name": "live",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "155",
+ "members": [
+ {
+ "name": "enable",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "156",
+ "members": [
+ {
+ "name": "filename",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "157",
+ "members": [
+ {
+ "name": "enable",
+ "type": "bool"
+ },
+ {
+ "name": "primary",
+ "type": "bool"
+ },
+ {
+ "name": "failover",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "158",
+ "members": [
+ {
+ "name": "error",
+ "type": "bool"
+ },
+ {
+ "name": "desc",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "159",
+ "members": [
+ {
+ "name": "mode",
+ "type": "436"
+ },
+ {
+ "name": "last-mode",
+ "type": "436"
+ },
+ {
+ "name": "reason",
+ "type": "437"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "160",
+ "members": [
+ {
+ "name": "uri",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "161",
+ "members": [
+ {
+ "name": "device-id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "162",
+ "members": [
+ {
+ "name": "calc-time",
+ "type": "int"
+ },
+ {
+ "name": "calc-time-unit",
+ "default": null,
+ "type": "439"
+ },
+ {
+ "name": "sample-pages",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "mode",
+ "default": null,
+ "type": "440"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "163",
+ "members": [
+ {
+ "name": "calc-time-unit",
+ "default": null,
+ "type": "439"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "164",
+ "members": [
+ {
+ "name": "dirty-rate",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "status",
+ "type": "441"
+ },
+ {
+ "name": "start-time",
+ "type": "int"
+ },
+ {
+ "name": "calc-time",
+ "type": "int"
+ },
+ {
+ "name": "calc-time-unit",
+ "type": "439"
+ },
+ {
+ "name": "sample-pages",
+ "type": "int"
+ },
+ {
+ "name": "mode",
+ "type": "440"
+ },
+ {
+ "name": "vcpu-dirty-rate",
+ "default": null,
+ "type": "[442]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "165",
+ "members": [
+ {
+ "name": "cpu-index",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "dirty-rate",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "166",
+ "members": [
+ {
+ "name": "cpu-index",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[167]",
+ "element-type": "167",
+ "meta-type": "array"
+ },
+ {
+ "name": "167",
+ "members": [
+ {
+ "name": "cpu-index",
+ "type": "int"
+ },
+ {
+ "name": "limit-rate",
+ "type": "int"
+ },
+ {
+ "name": "current-rate",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[168]",
+ "element-type": "168",
+ "meta-type": "array"
+ },
+ {
+ "name": "168",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "thread-id",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "169",
+ "members": [
+ {
+ "name": "job-id",
+ "type": "str"
+ },
+ {
+ "name": "tag",
+ "type": "str"
+ },
+ {
+ "name": "vmstate",
+ "type": "str"
+ },
+ {
+ "name": "devices",
+ "type": "[str]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "170",
+ "members": [
+ {
+ "name": "job-id",
+ "type": "str"
+ },
+ {
+ "name": "tag",
+ "type": "str"
+ },
+ {
+ "name": "vmstate",
+ "type": "str"
+ },
+ {
+ "name": "devices",
+ "type": "[str]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "171",
+ "members": [
+ {
+ "name": "job-id",
+ "type": "str"
+ },
+ {
+ "name": "tag",
+ "type": "str"
+ },
+ {
+ "name": "devices",
+ "type": "[str]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "172",
+ "members": [
+ {
+ "name": "actions",
+ "type": "[443]"
+ },
+ {
+ "name": "properties",
+ "default": null,
+ "type": "444"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "173",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "vcpu",
+ "default": null,
+ "type": "int",
+ "features": [
+ "deprecated"
+ ]
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[174]",
+ "element-type": "174",
+ "meta-type": "array"
+ },
+ {
+ "name": "174",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "state",
+ "type": "445"
+ },
+ {
+ "name": "vcpu",
+ "type": "bool",
+ "features": [
+ "deprecated"
+ ]
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "175",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "enable",
+ "type": "bool"
+ },
+ {
+ "name": "ignore-unavailable",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "vcpu",
+ "default": null,
+ "type": "int",
+ "features": [
+ "deprecated"
+ ]
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "176",
+ "members": [
+ {
+ "name": "enable",
+ "default": null,
+ "type": "[446]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "177",
+ "members": [
+ {
+ "name": "qemu",
+ "type": "447"
+ },
+ {
+ "name": "package",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[178]",
+ "element-type": "178",
+ "meta-type": "array"
+ },
+ {
+ "name": "178",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[179]",
+ "element-type": "179",
+ "meta-type": "array"
+ },
+ {
+ "name": "179",
+ "tag": "meta-type",
+ "variants": [
+ {
+ "case": "builtin",
+ "type": "449"
+ },
+ {
+ "case": "enum",
+ "type": "450"
+ },
+ {
+ "case": "array",
+ "type": "451"
+ },
+ {
+ "case": "object",
+ "type": "452"
+ },
+ {
+ "case": "alternate",
+ "type": "453"
+ },
+ {
+ "case": "command",
+ "type": "454"
+ },
+ {
+ "case": "event",
+ "type": "455"
+ }
+ ],
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "meta-type",
+ "type": "448"
+ },
+ {
+ "name": "features",
+ "default": null,
+ "type": "[str]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "180",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[181]",
+ "element-type": "181",
+ "meta-type": "array"
+ },
+ {
+ "name": "181",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "type",
+ "type": "str"
+ },
+ {
+ "name": "description",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "default-value",
+ "default": null,
+ "type": "any"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "182",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "property",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "any",
+ "json-type": "value",
+ "meta-type": "builtin"
+ },
+ {
+ "name": "183",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "property",
+ "type": "str"
+ },
+ {
+ "name": "value",
+ "type": "any"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "184",
+ "members": [
+ {
+ "name": "implements",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "abstract",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[185]",
+ "element-type": "185",
+ "meta-type": "array"
+ },
+ {
+ "name": "185",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "abstract",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "parent",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "186",
+ "members": [
+ {
+ "name": "typename",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "187",
+ "tag": "qom-type",
+ "variants": [
+ {
+ "case": "acpi-generic-initiator",
+ "type": "457"
+ },
+ {
+ "case": "authz-list",
+ "type": "458"
+ },
+ {
+ "case": "authz-listfile",
+ "type": "459"
+ },
+ {
+ "case": "authz-pam",
+ "type": "460"
+ },
+ {
+ "case": "authz-simple",
+ "type": "461"
+ },
+ {
+ "case": "can-host-socketcan",
+ "type": "462"
+ },
+ {
+ "case": "colo-compare",
+ "type": "463"
+ },
+ {
+ "case": "cryptodev-backend",
+ "type": "464"
+ },
+ {
+ "case": "cryptodev-backend-builtin",
+ "type": "464"
+ },
+ {
+ "case": "cryptodev-backend-lkcf",
+ "type": "464"
+ },
+ {
+ "case": "cryptodev-vhost-user",
+ "type": "465"
+ },
+ {
+ "case": "dbus-vmstate",
+ "type": "466"
+ },
+ {
+ "case": "filter-buffer",
+ "type": "467"
+ },
+ {
+ "case": "filter-dump",
+ "type": "468"
+ },
+ {
+ "case": "filter-mirror",
+ "type": "469"
+ },
+ {
+ "case": "filter-redirector",
+ "type": "470"
+ },
+ {
+ "case": "filter-replay",
+ "type": "471"
+ },
+ {
+ "case": "filter-rewriter",
+ "type": "472"
+ },
+ {
+ "case": "input-barrier",
+ "type": "473"
+ },
+ {
+ "case": "input-linux",
+ "type": "474"
+ },
+ {
+ "case": "iommufd",
+ "type": "475"
+ },
+ {
+ "case": "iothread",
+ "type": "476"
+ },
+ {
+ "case": "main-loop",
+ "type": "477"
+ },
+ {
+ "case": "memory-backend-epc",
+ "type": "478"
+ },
+ {
+ "case": "memory-backend-file",
+ "type": "479"
+ },
+ {
+ "case": "memory-backend-memfd",
+ "type": "480"
+ },
+ {
+ "case": "memory-backend-ram",
+ "type": "481"
+ },
+ {
+ "case": "pr-manager-helper",
+ "type": "482"
+ },
+ {
+ "case": "qtest",
+ "type": "483"
+ },
+ {
+ "case": "rng-builtin",
+ "type": "484"
+ },
+ {
+ "case": "rng-egd",
+ "type": "485"
+ },
+ {
+ "case": "rng-random",
+ "type": "486"
+ },
+ {
+ "case": "secret",
+ "type": "487"
+ },
+ {
+ "case": "secret_keyring",
+ "type": "488"
+ },
+ {
+ "case": "sev-guest",
+ "type": "489"
+ },
+ {
+ "case": "thread-context",
+ "type": "490"
+ },
+ {
+ "case": "throttle-group",
+ "type": "491"
+ },
+ {
+ "case": "tls-creds-anon",
+ "type": "492"
+ },
+ {
+ "case": "tls-creds-psk",
+ "type": "493"
+ },
+ {
+ "case": "tls-creds-x509",
+ "type": "494"
+ },
+ {
+ "case": "tls-cipher-suites",
+ "type": "495"
+ },
+ {
+ "case": "x-remote-object",
+ "type": "496"
+ },
+ {
+ "case": "x-vfio-user-server",
+ "type": "497"
+ },
+ {
+ "case": "can-bus",
+ "type": "0"
+ },
+ {
+ "case": "pef-guest",
+ "type": "0"
+ },
+ {
+ "case": "s390-pv-guest",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "qom-type",
+ "type": "456"
+ },
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "188",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "189",
+ "members": [
+ {
+ "name": "typename",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "190",
+ "members": [
+ {
+ "name": "driver",
+ "type": "str"
+ },
+ {
+ "name": "bus",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "191",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "192",
+ "members": [
+ {
+ "name": "device",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "path",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "193",
+ "members": [
+ {
+ "name": "device",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "path",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[194]",
+ "element-type": "194",
+ "meta-type": "array"
+ },
+ {
+ "name": "194",
+ "tag": "target",
+ "variants": [
+ {
+ "case": "s390x",
+ "type": "500"
+ },
+ {
+ "case": "aarch64",
+ "type": "0"
+ },
+ {
+ "case": "alpha",
+ "type": "0"
+ },
+ {
+ "case": "arm",
+ "type": "0"
+ },
+ {
+ "case": "avr",
+ "type": "0"
+ },
+ {
+ "case": "cris",
+ "type": "0"
+ },
+ {
+ "case": "hppa",
+ "type": "0"
+ },
+ {
+ "case": "i386",
+ "type": "0"
+ },
+ {
+ "case": "loongarch64",
+ "type": "0"
+ },
+ {
+ "case": "m68k",
+ "type": "0"
+ },
+ {
+ "case": "microblaze",
+ "type": "0"
+ },
+ {
+ "case": "microblazeel",
+ "type": "0"
+ },
+ {
+ "case": "mips",
+ "type": "0"
+ },
+ {
+ "case": "mips64",
+ "type": "0"
+ },
+ {
+ "case": "mips64el",
+ "type": "0"
+ },
+ {
+ "case": "mipsel",
+ "type": "0"
+ },
+ {
+ "case": "or1k",
+ "type": "0"
+ },
+ {
+ "case": "ppc",
+ "type": "0"
+ },
+ {
+ "case": "ppc64",
+ "type": "0"
+ },
+ {
+ "case": "riscv32",
+ "type": "0"
+ },
+ {
+ "case": "riscv64",
+ "type": "0"
+ },
+ {
+ "case": "rx",
+ "type": "0"
+ },
+ {
+ "case": "sh4",
+ "type": "0"
+ },
+ {
+ "case": "sh4eb",
+ "type": "0"
+ },
+ {
+ "case": "sparc",
+ "type": "0"
+ },
+ {
+ "case": "sparc64",
+ "type": "0"
+ },
+ {
+ "case": "tricore",
+ "type": "0"
+ },
+ {
+ "case": "x86_64",
+ "type": "0"
+ },
+ {
+ "case": "xtensa",
+ "type": "0"
+ },
+ {
+ "case": "xtensaeb",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "cpu-index",
+ "type": "int"
+ },
+ {
+ "name": "qom-path",
+ "type": "str"
+ },
+ {
+ "name": "thread-id",
+ "type": "int"
+ },
+ {
+ "name": "props",
+ "default": null,
+ "type": "498"
+ },
+ {
+ "name": "target",
+ "type": "499"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "195",
+ "members": [
+ {
+ "name": "compat-props",
+ "default": null,
+ "type": "bool",
+ "features": [
+ "unstable"
+ ]
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[196]",
+ "element-type": "196",
+ "meta-type": "array"
+ },
+ {
+ "name": "196",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "alias",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "is-default",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "cpu-max",
+ "type": "int"
+ },
+ {
+ "name": "hotpluggable-cpus",
+ "type": "bool"
+ },
+ {
+ "name": "numa-mem-supported",
+ "type": "bool"
+ },
+ {
+ "name": "deprecated",
+ "type": "bool"
+ },
+ {
+ "name": "default-cpu-type",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "default-ram-id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "acpi",
+ "type": "bool"
+ },
+ {
+ "name": "compat-props",
+ "default": null,
+ "type": "[501]",
+ "features": [
+ "unstable"
+ ]
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "197",
+ "members": [
+ {
+ "name": "wakeup-suspend-support",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "198",
+ "members": [
+ {
+ "name": "arch",
+ "type": "499"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "199",
+ "members": [
+ {
+ "name": "UUID",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "200",
+ "members": [
+ {
+ "name": "guid",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "201",
+ "members": [
+ {
+ "name": "enabled",
+ "type": "bool"
+ },
+ {
+ "name": "present",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "202",
+ "members": [
+ {
+ "name": "val",
+ "type": "int"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "filename",
+ "type": "str"
+ },
+ {
+ "name": "cpu-index",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "203",
+ "members": [
+ {
+ "name": "val",
+ "type": "int"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "filename",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[204]",
+ "element-type": "204",
+ "meta-type": "array"
+ },
+ {
+ "name": "204",
+ "members": [
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "merge",
+ "type": "bool"
+ },
+ {
+ "name": "dump",
+ "type": "bool"
+ },
+ {
+ "name": "prealloc",
+ "type": "bool"
+ },
+ {
+ "name": "share",
+ "type": "bool"
+ },
+ {
+ "name": "reserve",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "type": "[int]"
+ },
+ {
+ "name": "policy",
+ "type": "502"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[205]",
+ "element-type": "205",
+ "meta-type": "array"
+ },
+ {
+ "name": "205",
+ "members": [
+ {
+ "name": "type",
+ "type": "str"
+ },
+ {
+ "name": "vcpus-count",
+ "type": "int"
+ },
+ {
+ "name": "props",
+ "type": "498"
+ },
+ {
+ "name": "qom-path",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "206",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "node",
+ "type": "504"
+ },
+ {
+ "case": "dist",
+ "type": "505"
+ },
+ {
+ "case": "cpu",
+ "type": "506"
+ },
+ {
+ "case": "hmat-lb",
+ "type": "507"
+ },
+ {
+ "case": "hmat-cache",
+ "type": "508"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "503"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "207",
+ "members": [
+ {
+ "name": "value",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "208",
+ "members": [
+ {
+ "name": "actual",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "209",
+ "members": [
+ {
+ "name": "actual",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "210",
+ "members": [
+ {
+ "name": "committed",
+ "type": "int"
+ },
+ {
+ "name": "available",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "211",
+ "members": [
+ {
+ "name": "base-memory",
+ "type": "int"
+ },
+ {
+ "name": "plugged-memory",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[212]",
+ "element-type": "212",
+ "meta-type": "array"
+ },
+ {
+ "name": "212",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "dimm",
+ "type": "510"
+ },
+ {
+ "case": "nvdimm",
+ "type": "510"
+ },
+ {
+ "case": "virtio-pmem",
+ "type": "511"
+ },
+ {
+ "case": "virtio-mem",
+ "type": "512"
+ },
+ {
+ "case": "sgx-epc",
+ "type": "513"
+ },
+ {
+ "case": "hv-balloon",
+ "type": "514"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "509"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "213",
+ "members": [
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "qom-path",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "214",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "msg",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "215",
+ "members": [
+ {
+ "name": "human-readable-text",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "216",
+ "members": [
+ {
+ "name": "filename",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "221",
+ "members": [
+ {
+ "name": "type",
+ "type": "517"
+ },
+ {
+ "name": "model",
+ "type": "515"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "222",
+ "members": [
+ {
+ "name": "model",
+ "type": "515"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[223]",
+ "element-type": "223",
+ "meta-type": "array"
+ },
+ {
+ "name": "223",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "migration-safe",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "static",
+ "type": "bool"
+ },
+ {
+ "name": "unavailable-features",
+ "default": null,
+ "type": "[str]"
+ },
+ {
+ "name": "typename",
+ "type": "str"
+ },
+ {
+ "name": "alias-of",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "deprecated",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "227",
+ "members": [
+ {
+ "name": "mode",
+ "type": "520"
+ },
+ {
+ "name": "filename",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "icount",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "228",
+ "members": [
+ {
+ "name": "icount",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "229",
+ "members": [
+ {
+ "name": "icount",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "230",
+ "members": [
+ {
+ "name": "instances",
+ "type": "[231]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[231]",
+ "element-type": "231",
+ "meta-type": "array"
+ },
+ {
+ "name": "231",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "block-node",
+ "type": "522"
+ },
+ {
+ "case": "chardev",
+ "type": "523"
+ },
+ {
+ "case": "migration",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "521"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "232",
+ "members": [
+ {
+ "name": "protocol",
+ "type": "str"
+ },
+ {
+ "name": "fdname",
+ "type": "str"
+ },
+ {
+ "name": "skipauth",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "tls",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "233",
+ "members": [
+ {
+ "name": "name",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[234]",
+ "element-type": "234",
+ "meta-type": "array"
+ },
+ {
+ "name": "234",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "thread-id",
+ "type": "int"
+ },
+ {
+ "name": "poll-max-ns",
+ "type": "int"
+ },
+ {
+ "name": "poll-grow",
+ "type": "int"
+ },
+ {
+ "name": "poll-shrink",
+ "type": "int"
+ },
+ {
+ "name": "aio-max-batch",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "235",
+ "members": [
+ {
+ "name": "command-line",
+ "type": "str"
+ },
+ {
+ "name": "cpu-index",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "236",
+ "members": [
+ {
+ "name": "fdname",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "238",
+ "members": [
+ {
+ "name": "fdname",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "239",
+ "members": [
+ {
+ "name": "fdset-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "opaque",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "240",
+ "members": [
+ {
+ "name": "fdset-id",
+ "type": "int"
+ },
+ {
+ "name": "fd",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "241",
+ "members": [
+ {
+ "name": "fdset-id",
+ "type": "int"
+ },
+ {
+ "name": "fd",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[242]",
+ "element-type": "242",
+ "meta-type": "array"
+ },
+ {
+ "name": "242",
+ "members": [
+ {
+ "name": "fdset-id",
+ "type": "int"
+ },
+ {
+ "name": "fds",
+ "type": "[524]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "243",
+ "members": [
+ {
+ "name": "option",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[244]",
+ "element-type": "244",
+ "meta-type": "array"
+ },
+ {
+ "name": "244",
+ "members": [
+ {
+ "name": "option",
+ "type": "str"
+ },
+ {
+ "name": "parameters",
+ "type": "[525]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "245",
+ "members": [
+ {
+ "name": "offset",
+ "type": "int"
+ },
+ {
+ "name": "qom-path",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "246",
+ "members": [
+ {
+ "name": "vfu-id",
+ "type": "str"
+ },
+ {
+ "name": "vfu-qom-path",
+ "type": "str"
+ },
+ {
+ "name": "dev-id",
+ "type": "str"
+ },
+ {
+ "name": "dev-qom-path",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "247",
+ "members": [
+ {
+ "name": "enabled",
+ "type": "bool"
+ },
+ {
+ "name": "api-major",
+ "type": "int"
+ },
+ {
+ "name": "api-minor",
+ "type": "int"
+ },
+ {
+ "name": "build-id",
+ "type": "int"
+ },
+ {
+ "name": "policy",
+ "type": "int"
+ },
+ {
+ "name": "state",
+ "type": "526"
+ },
+ {
+ "name": "handle",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "248",
+ "members": [
+ {
+ "name": "data",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "249",
+ "members": [
+ {
+ "name": "pdh",
+ "type": "str"
+ },
+ {
+ "name": "cert-chain",
+ "type": "str"
+ },
+ {
+ "name": "cpu0-id",
+ "type": "str"
+ },
+ {
+ "name": "cbitpos",
+ "type": "int"
+ },
+ {
+ "name": "reduced-phys-bits",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "250",
+ "members": [
+ {
+ "name": "packet-header",
+ "type": "str"
+ },
+ {
+ "name": "secret",
+ "type": "str"
+ },
+ {
+ "name": "gpa",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "251",
+ "members": [
+ {
+ "name": "mnonce",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "252",
+ "members": [
+ {
+ "name": "data",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "255",
+ "members": [
+ {
+ "name": "sgx",
+ "type": "bool"
+ },
+ {
+ "name": "sgx1",
+ "type": "bool"
+ },
+ {
+ "name": "sgx2",
+ "type": "bool"
+ },
+ {
+ "name": "flc",
+ "type": "bool"
+ },
+ {
+ "name": "sections",
+ "type": "[527]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[256]",
+ "element-type": "256",
+ "meta-type": "array"
+ },
+ {
+ "name": "256",
+ "members": [
+ {
+ "name": "port",
+ "type": "int"
+ },
+ {
+ "name": "vcpu",
+ "type": "int"
+ },
+ {
+ "name": "type",
+ "type": "528"
+ },
+ {
+ "name": "remote-domain",
+ "type": "str"
+ },
+ {
+ "name": "target",
+ "type": "int"
+ },
+ {
+ "name": "pending",
+ "type": "bool"
+ },
+ {
+ "name": "masked",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "257",
+ "members": [
+ {
+ "name": "port",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[258]",
+ "element-type": "258",
+ "meta-type": "array"
+ },
+ {
+ "name": "258",
+ "tag": "driver",
+ "variants": [
+ {
+ "case": "none",
+ "type": "530"
+ },
+ {
+ "case": "alsa",
+ "type": "531"
+ },
+ {
+ "case": "dbus",
+ "type": "530"
+ },
+ {
+ "case": "oss",
+ "type": "535"
+ },
+ {
+ "case": "pa",
+ "type": "536"
+ },
+ {
+ "case": "sdl",
+ "type": "538"
+ },
+ {
+ "case": "spice",
+ "type": "530"
+ },
+ {
+ "case": "wav",
+ "type": "540"
+ }
+ ],
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "driver",
+ "type": "529"
+ },
+ {
+ "name": "timer-period",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[259]",
+ "element-type": "259",
+ "meta-type": "array"
+ },
+ {
+ "name": "259",
+ "members": [
+ {
+ "name": "device",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "slot",
+ "type": "str"
+ },
+ {
+ "name": "slot-type",
+ "type": "541"
+ },
+ {
+ "name": "source",
+ "type": "int"
+ },
+ {
+ "name": "status",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "260",
+ "members": [
+ {
+ "name": "info",
+ "type": "259"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[261]",
+ "element-type": "261",
+ "meta-type": "array"
+ },
+ {
+ "name": "261",
+ "members": [
+ {
+ "name": "bus",
+ "type": "int"
+ },
+ {
+ "name": "devices",
+ "type": "[542]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "262",
+ "tag": "target",
+ "variants": [
+ {
+ "case": "vcpu",
+ "type": "545"
+ },
+ {
+ "case": "vm",
+ "type": "0"
+ },
+ {
+ "case": "cryptodev",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "target",
+ "type": "543"
+ },
+ {
+ "name": "providers",
+ "default": null,
+ "type": "[544]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[263]",
+ "element-type": "263",
+ "meta-type": "array"
+ },
+ {
+ "name": "263",
+ "members": [
+ {
+ "name": "provider",
+ "type": "546"
+ },
+ {
+ "name": "qom-path",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "stats",
+ "type": "[547]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "264",
+ "members": [
+ {
+ "name": "provider",
+ "default": null,
+ "type": "546"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[265]",
+ "element-type": "265",
+ "meta-type": "array"
+ },
+ {
+ "name": "265",
+ "members": [
+ {
+ "name": "provider",
+ "type": "546"
+ },
+ {
+ "name": "target",
+ "type": "543"
+ },
+ {
+ "name": "stats",
+ "type": "[548]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[266]",
+ "element-type": "266",
+ "meta-type": "array"
+ },
+ {
+ "name": "266",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "name",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "267",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "268",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "device-id",
+ "type": "int"
+ },
+ {
+ "name": "vhost-started",
+ "type": "bool"
+ },
+ {
+ "name": "device-endian",
+ "type": "str"
+ },
+ {
+ "name": "guest-features",
+ "type": "549"
+ },
+ {
+ "name": "host-features",
+ "type": "549"
+ },
+ {
+ "name": "backend-features",
+ "type": "549"
+ },
+ {
+ "name": "num-vqs",
+ "type": "int"
+ },
+ {
+ "name": "status",
+ "type": "550"
+ },
+ {
+ "name": "isr",
+ "type": "int"
+ },
+ {
+ "name": "queue-sel",
+ "type": "int"
+ },
+ {
+ "name": "vm-running",
+ "type": "bool"
+ },
+ {
+ "name": "broken",
+ "type": "bool"
+ },
+ {
+ "name": "disabled",
+ "type": "bool"
+ },
+ {
+ "name": "use-started",
+ "type": "bool"
+ },
+ {
+ "name": "started",
+ "type": "bool"
+ },
+ {
+ "name": "start-on-kick",
+ "type": "bool"
+ },
+ {
+ "name": "disable-legacy-check",
+ "type": "bool"
+ },
+ {
+ "name": "bus-name",
+ "type": "str"
+ },
+ {
+ "name": "use-guest-notifier-mask",
+ "type": "bool"
+ },
+ {
+ "name": "vhost-dev",
+ "default": null,
+ "type": "551"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "269",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "queue",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "270",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "queue-index",
+ "type": "int"
+ },
+ {
+ "name": "inuse",
+ "type": "int"
+ },
+ {
+ "name": "vring-num",
+ "type": "int"
+ },
+ {
+ "name": "vring-num-default",
+ "type": "int"
+ },
+ {
+ "name": "vring-align",
+ "type": "int"
+ },
+ {
+ "name": "vring-desc",
+ "type": "int"
+ },
+ {
+ "name": "vring-avail",
+ "type": "int"
+ },
+ {
+ "name": "vring-used",
+ "type": "int"
+ },
+ {
+ "name": "last-avail-idx",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "shadow-avail-idx",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "used-idx",
+ "type": "int"
+ },
+ {
+ "name": "signalled-used",
+ "type": "int"
+ },
+ {
+ "name": "signalled-used-valid",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "271",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "queue",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "272",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "kick",
+ "type": "int"
+ },
+ {
+ "name": "call",
+ "type": "int"
+ },
+ {
+ "name": "desc",
+ "type": "int"
+ },
+ {
+ "name": "avail",
+ "type": "int"
+ },
+ {
+ "name": "used",
+ "type": "int"
+ },
+ {
+ "name": "num",
+ "type": "int"
+ },
+ {
+ "name": "desc-phys",
+ "type": "int"
+ },
+ {
+ "name": "desc-size",
+ "type": "int"
+ },
+ {
+ "name": "avail-phys",
+ "type": "int"
+ },
+ {
+ "name": "avail-size",
+ "type": "int"
+ },
+ {
+ "name": "used-phys",
+ "type": "int"
+ },
+ {
+ "name": "used-size",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "273",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "queue",
+ "type": "int"
+ },
+ {
+ "name": "index",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "274",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "index",
+ "type": "int"
+ },
+ {
+ "name": "descs",
+ "type": "[552]"
+ },
+ {
+ "name": "avail",
+ "type": "553"
+ },
+ {
+ "name": "used",
+ "type": "554"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "275",
+ "members": [
+ {
+ "name": "device-id",
+ "type": "str"
+ },
+ {
+ "name": "qom-path",
+ "type": "str"
+ },
+ {
+ "name": "device-state",
+ "type": "555"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[276]",
+ "element-type": "276",
+ "meta-type": "array"
+ },
+ {
+ "name": "276",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "service",
+ "type": "[556]"
+ },
+ {
+ "name": "client",
+ "type": "[557]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "277",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "log",
+ "type": "558"
+ },
+ {
+ "name": "flags",
+ "type": "int"
+ },
+ {
+ "name": "dpa",
+ "type": "int"
+ },
+ {
+ "name": "descriptor",
+ "type": "int"
+ },
+ {
+ "name": "type",
+ "type": "int"
+ },
+ {
+ "name": "transaction-type",
+ "type": "int"
+ },
+ {
+ "name": "channel",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "rank",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "device",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "component-id",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "278",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "log",
+ "type": "558"
+ },
+ {
+ "name": "flags",
+ "type": "int"
+ },
+ {
+ "name": "dpa",
+ "type": "int"
+ },
+ {
+ "name": "descriptor",
+ "type": "int"
+ },
+ {
+ "name": "type",
+ "type": "int"
+ },
+ {
+ "name": "transaction-type",
+ "type": "int"
+ },
+ {
+ "name": "channel",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "rank",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "nibble-mask",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bank-group",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bank",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "row",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "column",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "correction-mask",
+ "default": null,
+ "type": "[int]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "279",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "log",
+ "type": "558"
+ },
+ {
+ "name": "flags",
+ "type": "int"
+ },
+ {
+ "name": "type",
+ "type": "int"
+ },
+ {
+ "name": "health-status",
+ "type": "int"
+ },
+ {
+ "name": "media-status",
+ "type": "int"
+ },
+ {
+ "name": "additional-status",
+ "type": "int"
+ },
+ {
+ "name": "life-used",
+ "type": "int"
+ },
+ {
+ "name": "temperature",
+ "type": "int"
+ },
+ {
+ "name": "dirty-shutdown-count",
+ "type": "int"
+ },
+ {
+ "name": "corrected-volatile-error-count",
+ "type": "int"
+ },
+ {
+ "name": "corrected-persistent-error-count",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "280",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "start",
+ "type": "int"
+ },
+ {
+ "name": "length",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "281",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "errors",
+ "type": "[559]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "282",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "type",
+ "type": "560"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "bool",
+ "json-type": "boolean",
+ "meta-type": "builtin"
+ },
+ {
+ "name": "283",
+ "members": [
+ {
+ "name": "debug"
+ },
+ {
+ "name": "inmigrate"
+ },
+ {
+ "name": "internal-error"
+ },
+ {
+ "name": "io-error"
+ },
+ {
+ "name": "paused"
+ },
+ {
+ "name": "postmigrate"
+ },
+ {
+ "name": "prelaunch"
+ },
+ {
+ "name": "finish-migrate"
+ },
+ {
+ "name": "restore-vm"
+ },
+ {
+ "name": "running"
+ },
+ {
+ "name": "save-vm"
+ },
+ {
+ "name": "shutdown"
+ },
+ {
+ "name": "suspended"
+ },
+ {
+ "name": "watchdog"
+ },
+ {
+ "name": "guest-panicked"
+ },
+ {
+ "name": "colo"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "debug",
+ "inmigrate",
+ "internal-error",
+ "io-error",
+ "paused",
+ "postmigrate",
+ "prelaunch",
+ "finish-migrate",
+ "restore-vm",
+ "running",
+ "save-vm",
+ "shutdown",
+ "suspended",
+ "watchdog",
+ "guest-panicked",
+ "colo"
+ ]
+ },
+ {
+ "name": "284",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "host-error"
+ },
+ {
+ "name": "host-qmp-quit"
+ },
+ {
+ "name": "host-qmp-system-reset"
+ },
+ {
+ "name": "host-signal"
+ },
+ {
+ "name": "host-ui"
+ },
+ {
+ "name": "guest-shutdown"
+ },
+ {
+ "name": "guest-reset"
+ },
+ {
+ "name": "guest-panic"
+ },
+ {
+ "name": "subsystem-reset"
+ },
+ {
+ "name": "snapshot-load"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "host-error",
+ "host-qmp-quit",
+ "host-qmp-system-reset",
+ "host-signal",
+ "host-ui",
+ "guest-shutdown",
+ "guest-reset",
+ "guest-panic",
+ "subsystem-reset",
+ "snapshot-load"
+ ]
+ },
+ {
+ "name": "285",
+ "members": [
+ {
+ "name": "reset"
+ },
+ {
+ "name": "shutdown"
+ },
+ {
+ "name": "poweroff"
+ },
+ {
+ "name": "pause"
+ },
+ {
+ "name": "debug"
+ },
+ {
+ "name": "none"
+ },
+ {
+ "name": "inject-nmi"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "reset",
+ "shutdown",
+ "poweroff",
+ "pause",
+ "debug",
+ "none",
+ "inject-nmi"
+ ]
+ },
+ {
+ "name": "286",
+ "members": [
+ {
+ "name": "reset"
+ },
+ {
+ "name": "shutdown"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "reset",
+ "shutdown"
+ ]
+ },
+ {
+ "name": "287",
+ "members": [
+ {
+ "name": "poweroff"
+ },
+ {
+ "name": "pause"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "poweroff",
+ "pause"
+ ]
+ },
+ {
+ "name": "288",
+ "members": [
+ {
+ "name": "pause"
+ },
+ {
+ "name": "shutdown"
+ },
+ {
+ "name": "exit-failure"
+ },
+ {
+ "name": "none"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "pause",
+ "shutdown",
+ "exit-failure",
+ "none"
+ ]
+ },
+ {
+ "name": "289",
+ "members": [
+ {
+ "name": "pause"
+ },
+ {
+ "name": "poweroff"
+ },
+ {
+ "name": "run"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "pause",
+ "poweroff",
+ "run"
+ ]
+ },
+ {
+ "name": "290",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "hyper-v",
+ "type": "562"
+ },
+ {
+ "case": "s390",
+ "type": "563"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "561"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "291",
+ "members": [
+ {
+ "name": "hypervisor"
+ },
+ {
+ "name": "guest"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "hypervisor",
+ "guest"
+ ]
+ },
+ {
+ "name": "292",
+ "members": [
+ {
+ "name": "ignore"
+ },
+ {
+ "name": "inject"
+ },
+ {
+ "name": "fatal"
+ },
+ {
+ "name": "reset"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "ignore",
+ "inject",
+ "fatal",
+ "reset"
+ ]
+ },
+ {
+ "name": "293",
+ "members": [
+ {
+ "name": "action-required",
+ "type": "bool"
+ },
+ {
+ "name": "recursive",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "294",
+ "members": [
+ {
+ "name": "undefined"
+ },
+ {
+ "name": "created"
+ },
+ {
+ "name": "running"
+ },
+ {
+ "name": "paused"
+ },
+ {
+ "name": "ready"
+ },
+ {
+ "name": "standby"
+ },
+ {
+ "name": "waiting"
+ },
+ {
+ "name": "pending"
+ },
+ {
+ "name": "aborting"
+ },
+ {
+ "name": "concluded"
+ },
+ {
+ "name": "null"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "undefined",
+ "created",
+ "running",
+ "paused",
+ "ready",
+ "standby",
+ "waiting",
+ "pending",
+ "aborting",
+ "concluded",
+ "null"
+ ]
+ },
+ {
+ "name": "295",
+ "members": [
+ {
+ "name": "commit"
+ },
+ {
+ "name": "stream"
+ },
+ {
+ "name": "mirror"
+ },
+ {
+ "name": "backup"
+ },
+ {
+ "name": "create"
+ },
+ {
+ "name": "amend"
+ },
+ {
+ "name": "snapshot-load"
+ },
+ {
+ "name": "snapshot-save"
+ },
+ {
+ "name": "snapshot-delete"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "commit",
+ "stream",
+ "mirror",
+ "backup",
+ "create",
+ "amend",
+ "snapshot-load",
+ "snapshot-save",
+ "snapshot-delete"
+ ]
+ },
+ {
+ "name": "int",
+ "json-type": "int",
+ "meta-type": "builtin"
+ },
+ {
+ "name": "296",
+ "members": [
+ {
+ "name": "retain"
+ },
+ {
+ "name": "read-only"
+ },
+ {
+ "name": "read-write"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "retain",
+ "read-only",
+ "read-write"
+ ]
+ },
+ {
+ "name": "[int]",
+ "element-type": "int",
+ "meta-type": "array"
+ },
+ {
+ "name": "297",
+ "members": [
+ {
+ "name": "ok"
+ },
+ {
+ "name": "failed"
+ },
+ {
+ "name": "nospace"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "ok",
+ "failed",
+ "nospace"
+ ]
+ },
+ {
+ "name": "298",
+ "members": [
+ {
+ "name": "rd_bytes",
+ "type": "int"
+ },
+ {
+ "name": "wr_bytes",
+ "type": "int"
+ },
+ {
+ "name": "zone_append_bytes",
+ "type": "int"
+ },
+ {
+ "name": "unmap_bytes",
+ "type": "int"
+ },
+ {
+ "name": "rd_operations",
+ "type": "int"
+ },
+ {
+ "name": "wr_operations",
+ "type": "int"
+ },
+ {
+ "name": "zone_append_operations",
+ "type": "int"
+ },
+ {
+ "name": "flush_operations",
+ "type": "int"
+ },
+ {
+ "name": "unmap_operations",
+ "type": "int"
+ },
+ {
+ "name": "rd_total_time_ns",
+ "type": "int"
+ },
+ {
+ "name": "wr_total_time_ns",
+ "type": "int"
+ },
+ {
+ "name": "zone_append_total_time_ns",
+ "type": "int"
+ },
+ {
+ "name": "flush_total_time_ns",
+ "type": "int"
+ },
+ {
+ "name": "unmap_total_time_ns",
+ "type": "int"
+ },
+ {
+ "name": "wr_highest_offset",
+ "type": "int"
+ },
+ {
+ "name": "rd_merged",
+ "type": "int"
+ },
+ {
+ "name": "wr_merged",
+ "type": "int"
+ },
+ {
+ "name": "zone_append_merged",
+ "type": "int"
+ },
+ {
+ "name": "unmap_merged",
+ "type": "int"
+ },
+ {
+ "name": "idle_time_ns",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "failed_rd_operations",
+ "type": "int"
+ },
+ {
+ "name": "failed_wr_operations",
+ "type": "int"
+ },
+ {
+ "name": "failed_zone_append_operations",
+ "type": "int"
+ },
+ {
+ "name": "failed_flush_operations",
+ "type": "int"
+ },
+ {
+ "name": "failed_unmap_operations",
+ "type": "int"
+ },
+ {
+ "name": "invalid_rd_operations",
+ "type": "int"
+ },
+ {
+ "name": "invalid_wr_operations",
+ "type": "int"
+ },
+ {
+ "name": "invalid_zone_append_operations",
+ "type": "int"
+ },
+ {
+ "name": "invalid_flush_operations",
+ "type": "int"
+ },
+ {
+ "name": "invalid_unmap_operations",
+ "type": "int"
+ },
+ {
+ "name": "account_invalid",
+ "type": "bool"
+ },
+ {
+ "name": "account_failed",
+ "type": "bool"
+ },
+ {
+ "name": "timed_stats",
+ "type": "[564]"
+ },
+ {
+ "name": "rd_latency_histogram",
+ "default": null,
+ "type": "565"
+ },
+ {
+ "name": "wr_latency_histogram",
+ "default": null,
+ "type": "565"
+ },
+ {
+ "name": "zone_append_latency_histogram",
+ "default": null,
+ "type": "565"
+ },
+ {
+ "name": "flush_latency_histogram",
+ "default": null,
+ "type": "565"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "299",
+ "tag": "driver",
+ "variants": [
+ {
+ "case": "file",
+ "type": "566"
+ },
+ {
+ "case": "host_device",
+ "type": "566"
+ },
+ {
+ "case": "nvme",
+ "type": "567"
+ },
+ {
+ "case": "blkdebug",
+ "type": "0"
+ },
+ {
+ "case": "blklogwrites",
+ "type": "0"
+ },
+ {
+ "case": "blkreplay",
+ "type": "0"
+ },
+ {
+ "case": "blkverify",
+ "type": "0"
+ },
+ {
+ "case": "bochs",
+ "type": "0"
+ },
+ {
+ "case": "cloop",
+ "type": "0"
+ },
+ {
+ "case": "compress",
+ "type": "0"
+ },
+ {
+ "case": "copy-before-write",
+ "type": "0"
+ },
+ {
+ "case": "copy-on-read",
+ "type": "0"
+ },
+ {
+ "case": "dmg",
+ "type": "0"
+ },
+ {
+ "case": "snapshot-access",
+ "type": "0"
+ },
+ {
+ "case": "ftp",
+ "type": "0"
+ },
+ {
+ "case": "ftps",
+ "type": "0"
+ },
+ {
+ "case": "gluster",
+ "type": "0"
+ },
+ {
+ "case": "host_cdrom",
+ "type": "0"
+ },
+ {
+ "case": "http",
+ "type": "0"
+ },
+ {
+ "case": "https",
+ "type": "0"
+ },
+ {
+ "case": "io_uring",
+ "type": "0"
+ },
+ {
+ "case": "iscsi",
+ "type": "0"
+ },
+ {
+ "case": "luks",
+ "type": "0"
+ },
+ {
+ "case": "nbd",
+ "type": "0"
+ },
+ {
+ "case": "nfs",
+ "type": "0"
+ },
+ {
+ "case": "null-aio",
+ "type": "0"
+ },
+ {
+ "case": "null-co",
+ "type": "0"
+ },
+ {
+ "case": "nvme-io_uring",
+ "type": "0"
+ },
+ {
+ "case": "parallels",
+ "type": "0"
+ },
+ {
+ "case": "preallocate",
+ "type": "0"
+ },
+ {
+ "case": "qcow",
+ "type": "0"
+ },
+ {
+ "case": "qcow2",
+ "type": "0"
+ },
+ {
+ "case": "qed",
+ "type": "0"
+ },
+ {
+ "case": "quorum",
+ "type": "0"
+ },
+ {
+ "case": "raw",
+ "type": "0"
+ },
+ {
+ "case": "rbd",
+ "type": "0"
+ },
+ {
+ "case": "replication",
+ "type": "0"
+ },
+ {
+ "case": "ssh",
+ "type": "0"
+ },
+ {
+ "case": "throttle",
+ "type": "0"
+ },
+ {
+ "case": "vdi",
+ "type": "0"
+ },
+ {
+ "case": "vhdx",
+ "type": "0"
+ },
+ {
+ "case": "virtio-blk-vfio-pci",
+ "type": "0"
+ },
+ {
+ "case": "virtio-blk-vhost-user",
+ "type": "0"
+ },
+ {
+ "case": "virtio-blk-vhost-vdpa",
+ "type": "0"
+ },
+ {
+ "case": "vmdk",
+ "type": "0"
+ },
+ {
+ "case": "vpc",
+ "type": "0"
+ },
+ {
+ "case": "vvfat",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "driver",
+ "type": "315"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "300",
+ "members": [
+ {
+ "name": "actively-synced",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "301",
+ "members": [
+ {
+ "name": "existing"
+ },
+ {
+ "name": "absolute-paths"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "existing",
+ "absolute-paths"
+ ]
+ },
+ {
+ "name": "302",
+ "members": [
+ {
+ "name": "report"
+ },
+ {
+ "name": "ignore"
+ },
+ {
+ "name": "enospc"
+ },
+ {
+ "name": "stop"
+ },
+ {
+ "name": "auto"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "report",
+ "ignore",
+ "enospc",
+ "stop",
+ "auto"
+ ]
+ },
+ {
+ "name": "303",
+ "members": [
+ {
+ "name": "top"
+ },
+ {
+ "name": "full"
+ },
+ {
+ "name": "none"
+ },
+ {
+ "name": "incremental"
+ },
+ {
+ "name": "bitmap"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "top",
+ "full",
+ "none",
+ "incremental",
+ "bitmap"
+ ]
+ },
+ {
+ "name": "304",
+ "members": [
+ {
+ "name": "on-success"
+ },
+ {
+ "name": "never"
+ },
+ {
+ "name": "always"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "on-success",
+ "never",
+ "always"
+ ]
+ },
+ {
+ "name": "305",
+ "members": [
+ {
+ "name": "use-copy-range",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "max-workers",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "max-chunk",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "306",
+ "members": [
+ {
+ "name": "off"
+ },
+ {
+ "name": "on"
+ },
+ {
+ "name": "unmap"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "off",
+ "on",
+ "unmap"
+ ]
+ },
+ {
+ "name": "307",
+ "members": [
+ {
+ "name": "filename",
+ "type": "str"
+ },
+ {
+ "name": "format",
+ "type": "str"
+ },
+ {
+ "name": "dirty-flag",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "actual-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "virtual-size",
+ "type": "int"
+ },
+ {
+ "name": "cluster-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "encrypted",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "compressed",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "backing-filename",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "full-backing-filename",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "backing-filename-format",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "snapshots",
+ "default": null,
+ "type": "[78]"
+ },
+ {
+ "name": "format-specific",
+ "default": null,
+ "type": "568"
+ },
+ {
+ "name": "backing-image",
+ "default": null,
+ "type": "307"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "308",
+ "members": [
+ {
+ "name": "writeback",
+ "type": "bool"
+ },
+ {
+ "name": "direct",
+ "type": "bool"
+ },
+ {
+ "name": "no-flush",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[309]",
+ "element-type": "309",
+ "meta-type": "array"
+ },
+ {
+ "name": "309",
+ "members": [
+ {
+ "name": "name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "count",
+ "type": "int"
+ },
+ {
+ "name": "granularity",
+ "type": "int"
+ },
+ {
+ "name": "recording",
+ "type": "bool"
+ },
+ {
+ "name": "busy",
+ "type": "bool"
+ },
+ {
+ "name": "persistent",
+ "type": "bool"
+ },
+ {
+ "name": "inconsistent",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[310]",
+ "element-type": "310",
+ "meta-type": "array"
+ },
+ {
+ "name": "310",
+ "members": [
+ {
+ "name": "id",
+ "type": "int"
+ },
+ {
+ "name": "type",
+ "type": "569"
+ },
+ {
+ "name": "name",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[311]",
+ "element-type": "311",
+ "meta-type": "array"
+ },
+ {
+ "name": "311",
+ "members": [
+ {
+ "name": "parent",
+ "type": "int"
+ },
+ {
+ "name": "child",
+ "type": "int"
+ },
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "perm",
+ "type": "[570]"
+ },
+ {
+ "name": "shared-perm",
+ "type": "[570]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "312",
+ "members": [
+ {
+ "name": "background"
+ },
+ {
+ "name": "write-blocking"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "background",
+ "write-blocking"
+ ]
+ },
+ {
+ "name": "[313]",
+ "element-type": "313",
+ "meta-type": "array"
+ },
+ {
+ "name": "313",
+ "members": [
+ {
+ "type": "str"
+ },
+ {
+ "type": "45"
+ }
+ ],
+ "meta-type": "alternate"
+ },
+ {
+ "name": "314",
+ "members": [
+ {
+ "name": "copy-mode",
+ "type": "312"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "315",
+ "members": [
+ {
+ "name": "blkdebug"
+ },
+ {
+ "name": "blklogwrites"
+ },
+ {
+ "name": "blkreplay"
+ },
+ {
+ "name": "blkverify"
+ },
+ {
+ "name": "bochs"
+ },
+ {
+ "name": "cloop"
+ },
+ {
+ "name": "compress"
+ },
+ {
+ "name": "copy-before-write"
+ },
+ {
+ "name": "copy-on-read"
+ },
+ {
+ "name": "dmg"
+ },
+ {
+ "name": "file"
+ },
+ {
+ "name": "snapshot-access"
+ },
+ {
+ "name": "ftp"
+ },
+ {
+ "name": "ftps"
+ },
+ {
+ "name": "gluster"
+ },
+ {
+ "name": "host_cdrom"
+ },
+ {
+ "name": "host_device"
+ },
+ {
+ "name": "http"
+ },
+ {
+ "name": "https"
+ },
+ {
+ "name": "io_uring"
+ },
+ {
+ "name": "iscsi"
+ },
+ {
+ "name": "luks"
+ },
+ {
+ "name": "nbd"
+ },
+ {
+ "name": "nfs"
+ },
+ {
+ "name": "null-aio"
+ },
+ {
+ "name": "null-co"
+ },
+ {
+ "name": "nvme"
+ },
+ {
+ "name": "nvme-io_uring"
+ },
+ {
+ "name": "parallels"
+ },
+ {
+ "name": "preallocate"
+ },
+ {
+ "name": "qcow"
+ },
+ {
+ "name": "qcow2"
+ },
+ {
+ "name": "qed"
+ },
+ {
+ "name": "quorum"
+ },
+ {
+ "name": "raw"
+ },
+ {
+ "name": "rbd"
+ },
+ {
+ "name": "replication"
+ },
+ {
+ "name": "ssh"
+ },
+ {
+ "name": "throttle"
+ },
+ {
+ "name": "vdi"
+ },
+ {
+ "name": "vhdx"
+ },
+ {
+ "name": "virtio-blk-vfio-pci"
+ },
+ {
+ "name": "virtio-blk-vhost-user"
+ },
+ {
+ "name": "virtio-blk-vhost-vdpa"
+ },
+ {
+ "name": "vmdk"
+ },
+ {
+ "name": "vpc"
+ },
+ {
+ "name": "vvfat"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "blkdebug",
+ "blklogwrites",
+ "blkreplay",
+ "blkverify",
+ "bochs",
+ "cloop",
+ "compress",
+ "copy-before-write",
+ "copy-on-read",
+ "dmg",
+ "file",
+ "snapshot-access",
+ "ftp",
+ "ftps",
+ "gluster",
+ "host_cdrom",
+ "host_device",
+ "http",
+ "https",
+ "io_uring",
+ "iscsi",
+ "luks",
+ "nbd",
+ "nfs",
+ "null-aio",
+ "null-co",
+ "nvme",
+ "nvme-io_uring",
+ "parallels",
+ "preallocate",
+ "qcow",
+ "qcow2",
+ "qed",
+ "quorum",
+ "raw",
+ "rbd",
+ "replication",
+ "ssh",
+ "throttle",
+ "vdi",
+ "vhdx",
+ "virtio-blk-vfio-pci",
+ "virtio-blk-vhost-user",
+ "virtio-blk-vhost-vdpa",
+ "vmdk",
+ "vpc",
+ "vvfat"
+ ]
+ },
+ {
+ "name": "316",
+ "members": [
+ {
+ "name": "ignore"
+ },
+ {
+ "name": "unmap"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "ignore",
+ "unmap"
+ ]
+ },
+ {
+ "name": "317",
+ "members": [
+ {
+ "name": "direct",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "no-flush",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "318",
+ "members": [
+ {
+ "name": "image",
+ "type": "571"
+ },
+ {
+ "name": "config",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "align",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "max-transfer",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "opt-write-zero",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "max-write-zero",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "opt-discard",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "max-discard",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "inject-error",
+ "default": null,
+ "type": "[572]"
+ },
+ {
+ "name": "set-state",
+ "default": null,
+ "type": "[573]"
+ },
+ {
+ "name": "take-child-perms",
+ "default": null,
+ "type": "[570]"
+ },
+ {
+ "name": "unshare-child-perms",
+ "default": null,
+ "type": "[570]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "319",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "log",
+ "type": "571"
+ },
+ {
+ "name": "log-sector-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "log-append",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "log-super-update-interval",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "320",
+ "members": [
+ {
+ "name": "test",
+ "type": "571"
+ },
+ {
+ "name": "raw",
+ "type": "571"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "321",
+ "members": [
+ {
+ "name": "image",
+ "type": "571"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "322",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "323",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "target",
+ "type": "571"
+ },
+ {
+ "name": "bitmap",
+ "default": null,
+ "type": "45"
+ },
+ {
+ "name": "on-cbw-error",
+ "default": null,
+ "type": "574"
+ },
+ {
+ "name": "cbw-timeout",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "324",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "bottom",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "325",
+ "members": [
+ {
+ "name": "filename",
+ "type": "str"
+ },
+ {
+ "name": "pr-manager",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "locking",
+ "default": null,
+ "type": "575"
+ },
+ {
+ "name": "aio",
+ "default": null,
+ "type": "576"
+ },
+ {
+ "name": "aio-max-batch",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "drop-cache",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "x-check-cache-dropped",
+ "default": null,
+ "type": "bool",
+ "features": [
+ "unstable"
+ ]
+ }
+ ],
+ "meta-type": "object",
+ "features": [
+ "dynamic-auto-read-only"
+ ]
+ },
+ {
+ "name": "326",
+ "members": [
+ {
+ "name": "url",
+ "type": "str"
+ },
+ {
+ "name": "readahead",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "timeout",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "username",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "password-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "proxy-username",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "proxy-password-secret",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "327",
+ "members": [
+ {
+ "name": "url",
+ "type": "str"
+ },
+ {
+ "name": "readahead",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "timeout",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "username",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "password-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "proxy-username",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "proxy-password-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "sslverify",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "328",
+ "members": [
+ {
+ "name": "volume",
+ "type": "str"
+ },
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "server",
+ "type": "[389]"
+ },
+ {
+ "name": "debug",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "logfile",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "329",
+ "members": [
+ {
+ "name": "url",
+ "type": "str"
+ },
+ {
+ "name": "readahead",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "timeout",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "username",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "password-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "proxy-username",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "proxy-password-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "cookie",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "cookie-secret",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "330",
+ "members": [
+ {
+ "name": "url",
+ "type": "str"
+ },
+ {
+ "name": "readahead",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "timeout",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "username",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "password-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "proxy-username",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "proxy-password-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "cookie",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "sslverify",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "cookie-secret",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "331",
+ "members": [
+ {
+ "name": "filename",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "332",
+ "members": [
+ {
+ "name": "transport",
+ "type": "577"
+ },
+ {
+ "name": "portal",
+ "type": "str"
+ },
+ {
+ "name": "target",
+ "type": "str"
+ },
+ {
+ "name": "lun",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "user",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "password-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "initiator-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "header-digest",
+ "default": null,
+ "type": "578"
+ },
+ {
+ "name": "timeout",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "333",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "key-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "header",
+ "default": null,
+ "type": "571"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "334",
+ "members": [
+ {
+ "name": "server",
+ "type": "389"
+ },
+ {
+ "name": "export",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "tls-creds",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "tls-hostname",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "x-dirty-bitmap",
+ "default": null,
+ "type": "str",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "reconnect-delay",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "open-timeout",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "335",
+ "members": [
+ {
+ "name": "server",
+ "type": "579"
+ },
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "user",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "group",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "tcp-syn-count",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "readahead-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "page-cache-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "debug",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "336",
+ "members": [
+ {
+ "name": "size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "latency-ns",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "read-zeroes",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "337",
+ "members": [
+ {
+ "name": "device",
+ "type": "str"
+ },
+ {
+ "name": "namespace",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "338",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "339",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "prealloc-align",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "prealloc-size",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "340",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "backing",
+ "default": null,
+ "type": "580"
+ },
+ {
+ "name": "lazy-refcounts",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "pass-discard-request",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "pass-discard-snapshot",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "pass-discard-other",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "discard-no-unref",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "overlap-check",
+ "default": null,
+ "type": "581"
+ },
+ {
+ "name": "cache-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "l2-cache-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "l2-cache-entry-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "refcount-cache-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "cache-clean-interval",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "encrypt",
+ "default": null,
+ "type": "582"
+ },
+ {
+ "name": "data-file",
+ "default": null,
+ "type": "571"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "341",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "backing",
+ "default": null,
+ "type": "580"
+ },
+ {
+ "name": "encrypt",
+ "default": null,
+ "type": "583"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "342",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "backing",
+ "default": null,
+ "type": "580"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "343",
+ "members": [
+ {
+ "name": "blkverify",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "children",
+ "type": "[571]"
+ },
+ {
+ "name": "vote-threshold",
+ "type": "int"
+ },
+ {
+ "name": "rewrite-corrupted",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "read-pattern",
+ "default": null,
+ "type": "584"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "344",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "offset",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "size",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "345",
+ "members": [
+ {
+ "name": "pool",
+ "type": "str"
+ },
+ {
+ "name": "namespace",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "image",
+ "type": "str"
+ },
+ {
+ "name": "conf",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "snapshot",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "encrypt",
+ "default": null,
+ "type": "585"
+ },
+ {
+ "name": "user",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "auth-client-required",
+ "default": null,
+ "type": "[586]"
+ },
+ {
+ "name": "key-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "server",
+ "default": null,
+ "type": "[587]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "346",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "mode",
+ "type": "588"
+ },
+ {
+ "name": "top-id",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "347",
+ "members": [
+ {
+ "name": "server",
+ "type": "589"
+ },
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "user",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "host-key-check",
+ "default": null,
+ "type": "590"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "348",
+ "members": [
+ {
+ "name": "throttle-group",
+ "type": "str"
+ },
+ {
+ "name": "file",
+ "type": "571"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "349",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "350",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "351",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object",
+ "features": [
+ "fdset"
+ ]
+ },
+ {
+ "name": "352",
+ "members": [
+ {
+ "name": "dir",
+ "type": "str"
+ },
+ {
+ "name": "fat-type",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "floppy",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "label",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "rw",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[58]",
+ "element-type": "58",
+ "meta-type": "array"
+ },
+ {
+ "name": "353",
+ "tag": "driver",
+ "variants": [
+ {
+ "case": "file",
+ "type": "591"
+ },
+ {
+ "case": "gluster",
+ "type": "592"
+ },
+ {
+ "case": "luks",
+ "type": "593"
+ },
+ {
+ "case": "nfs",
+ "type": "594"
+ },
+ {
+ "case": "parallels",
+ "type": "595"
+ },
+ {
+ "case": "qcow",
+ "type": "596"
+ },
+ {
+ "case": "qcow2",
+ "type": "597"
+ },
+ {
+ "case": "qed",
+ "type": "598"
+ },
+ {
+ "case": "rbd",
+ "type": "599"
+ },
+ {
+ "case": "ssh",
+ "type": "600"
+ },
+ {
+ "case": "vdi",
+ "type": "601"
+ },
+ {
+ "case": "vhdx",
+ "type": "602"
+ },
+ {
+ "case": "vmdk",
+ "type": "603"
+ },
+ {
+ "case": "vpc",
+ "type": "604"
+ },
+ {
+ "case": "blkdebug",
+ "type": "0"
+ },
+ {
+ "case": "blklogwrites",
+ "type": "0"
+ },
+ {
+ "case": "blkreplay",
+ "type": "0"
+ },
+ {
+ "case": "blkverify",
+ "type": "0"
+ },
+ {
+ "case": "bochs",
+ "type": "0"
+ },
+ {
+ "case": "cloop",
+ "type": "0"
+ },
+ {
+ "case": "compress",
+ "type": "0"
+ },
+ {
+ "case": "copy-before-write",
+ "type": "0"
+ },
+ {
+ "case": "copy-on-read",
+ "type": "0"
+ },
+ {
+ "case": "dmg",
+ "type": "0"
+ },
+ {
+ "case": "snapshot-access",
+ "type": "0"
+ },
+ {
+ "case": "ftp",
+ "type": "0"
+ },
+ {
+ "case": "ftps",
+ "type": "0"
+ },
+ {
+ "case": "host_cdrom",
+ "type": "0"
+ },
+ {
+ "case": "host_device",
+ "type": "0"
+ },
+ {
+ "case": "http",
+ "type": "0"
+ },
+ {
+ "case": "https",
+ "type": "0"
+ },
+ {
+ "case": "io_uring",
+ "type": "0"
+ },
+ {
+ "case": "iscsi",
+ "type": "0"
+ },
+ {
+ "case": "nbd",
+ "type": "0"
+ },
+ {
+ "case": "null-aio",
+ "type": "0"
+ },
+ {
+ "case": "null-co",
+ "type": "0"
+ },
+ {
+ "case": "nvme",
+ "type": "0"
+ },
+ {
+ "case": "nvme-io_uring",
+ "type": "0"
+ },
+ {
+ "case": "preallocate",
+ "type": "0"
+ },
+ {
+ "case": "quorum",
+ "type": "0"
+ },
+ {
+ "case": "raw",
+ "type": "0"
+ },
+ {
+ "case": "replication",
+ "type": "0"
+ },
+ {
+ "case": "throttle",
+ "type": "0"
+ },
+ {
+ "case": "virtio-blk-vfio-pci",
+ "type": "0"
+ },
+ {
+ "case": "virtio-blk-vhost-user",
+ "type": "0"
+ },
+ {
+ "case": "virtio-blk-vhost-vdpa",
+ "type": "0"
+ },
+ {
+ "case": "vvfat",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "driver",
+ "type": "315"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "354",
+ "tag": "driver",
+ "variants": [
+ {
+ "case": "luks",
+ "type": "605"
+ },
+ {
+ "case": "qcow2",
+ "type": "606"
+ },
+ {
+ "case": "blkdebug",
+ "type": "0"
+ },
+ {
+ "case": "blklogwrites",
+ "type": "0"
+ },
+ {
+ "case": "blkreplay",
+ "type": "0"
+ },
+ {
+ "case": "blkverify",
+ "type": "0"
+ },
+ {
+ "case": "bochs",
+ "type": "0"
+ },
+ {
+ "case": "cloop",
+ "type": "0"
+ },
+ {
+ "case": "compress",
+ "type": "0"
+ },
+ {
+ "case": "copy-before-write",
+ "type": "0"
+ },
+ {
+ "case": "copy-on-read",
+ "type": "0"
+ },
+ {
+ "case": "dmg",
+ "type": "0"
+ },
+ {
+ "case": "file",
+ "type": "0"
+ },
+ {
+ "case": "snapshot-access",
+ "type": "0"
+ },
+ {
+ "case": "ftp",
+ "type": "0"
+ },
+ {
+ "case": "ftps",
+ "type": "0"
+ },
+ {
+ "case": "gluster",
+ "type": "0"
+ },
+ {
+ "case": "host_cdrom",
+ "type": "0"
+ },
+ {
+ "case": "host_device",
+ "type": "0"
+ },
+ {
+ "case": "http",
+ "type": "0"
+ },
+ {
+ "case": "https",
+ "type": "0"
+ },
+ {
+ "case": "io_uring",
+ "type": "0"
+ },
+ {
+ "case": "iscsi",
+ "type": "0"
+ },
+ {
+ "case": "nbd",
+ "type": "0"
+ },
+ {
+ "case": "nfs",
+ "type": "0"
+ },
+ {
+ "case": "null-aio",
+ "type": "0"
+ },
+ {
+ "case": "null-co",
+ "type": "0"
+ },
+ {
+ "case": "nvme",
+ "type": "0"
+ },
+ {
+ "case": "nvme-io_uring",
+ "type": "0"
+ },
+ {
+ "case": "parallels",
+ "type": "0"
+ },
+ {
+ "case": "preallocate",
+ "type": "0"
+ },
+ {
+ "case": "qcow",
+ "type": "0"
+ },
+ {
+ "case": "qed",
+ "type": "0"
+ },
+ {
+ "case": "quorum",
+ "type": "0"
+ },
+ {
+ "case": "raw",
+ "type": "0"
+ },
+ {
+ "case": "rbd",
+ "type": "0"
+ },
+ {
+ "case": "replication",
+ "type": "0"
+ },
+ {
+ "case": "ssh",
+ "type": "0"
+ },
+ {
+ "case": "throttle",
+ "type": "0"
+ },
+ {
+ "case": "vdi",
+ "type": "0"
+ },
+ {
+ "case": "vhdx",
+ "type": "0"
+ },
+ {
+ "case": "virtio-blk-vfio-pci",
+ "type": "0"
+ },
+ {
+ "case": "virtio-blk-vhost-user",
+ "type": "0"
+ },
+ {
+ "case": "virtio-blk-vhost-vdpa",
+ "type": "0"
+ },
+ {
+ "case": "vmdk",
+ "type": "0"
+ },
+ {
+ "case": "vpc",
+ "type": "0"
+ },
+ {
+ "case": "vvfat",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "driver",
+ "type": "315"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "355",
+ "members": [
+ {
+ "name": "read"
+ },
+ {
+ "name": "write"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "read",
+ "write"
+ ]
+ },
+ {
+ "name": "356",
+ "members": [
+ {
+ "name": "ignore"
+ },
+ {
+ "name": "report"
+ },
+ {
+ "name": "stop"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "ignore",
+ "report",
+ "stop"
+ ]
+ },
+ {
+ "name": "357",
+ "members": [
+ {
+ "type": "str"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "meta-type": "alternate"
+ },
+ {
+ "name": "358",
+ "members": [
+ {
+ "name": "read"
+ },
+ {
+ "name": "write"
+ },
+ {
+ "name": "flush"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "read",
+ "write",
+ "flush"
+ ]
+ },
+ {
+ "name": "359",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "inet",
+ "type": "608"
+ },
+ {
+ "case": "unix",
+ "type": "609"
+ },
+ {
+ "case": "vsock",
+ "type": "610"
+ },
+ {
+ "case": "fd",
+ "type": "611"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "607"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "360",
+ "members": [
+ {
+ "name": "safe"
+ },
+ {
+ "name": "hard"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "safe",
+ "hard"
+ ]
+ },
+ {
+ "name": "361",
+ "members": [
+ {
+ "name": "nbd"
+ },
+ {
+ "name": "vhost-user-blk"
+ },
+ {
+ "name": "fuse"
+ },
+ {
+ "name": "vduse-blk"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "nbd",
+ "vhost-user-blk",
+ "fuse",
+ "vduse-blk"
+ ]
+ },
+ {
+ "name": "362",
+ "members": [
+ {
+ "name": "name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "description",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "bitmaps",
+ "default": null,
+ "type": "[313]"
+ },
+ {
+ "name": "allocation-depth",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "363",
+ "members": [
+ {
+ "name": "addr",
+ "type": "389"
+ },
+ {
+ "name": "logical-block-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "num-queues",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "364",
+ "members": [
+ {
+ "name": "mountpoint",
+ "type": "str"
+ },
+ {
+ "name": "growable",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "allow-other",
+ "default": null,
+ "type": "612"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "365",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "num-queues",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "queue-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "logical-block-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "serial",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "366",
+ "members": [
+ {
+ "name": "utf8"
+ },
+ {
+ "name": "base64"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "utf8",
+ "base64"
+ ]
+ },
+ {
+ "name": "367",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "file",
+ "type": "614"
+ },
+ {
+ "case": "serial",
+ "type": "615"
+ },
+ {
+ "case": "parallel",
+ "type": "615"
+ },
+ {
+ "case": "pipe",
+ "type": "615"
+ },
+ {
+ "case": "socket",
+ "type": "616"
+ },
+ {
+ "case": "udp",
+ "type": "617"
+ },
+ {
+ "case": "pty",
+ "type": "618"
+ },
+ {
+ "case": "null",
+ "type": "618"
+ },
+ {
+ "case": "mux",
+ "type": "619"
+ },
+ {
+ "case": "msmouse",
+ "type": "618"
+ },
+ {
+ "case": "wctablet",
+ "type": "618"
+ },
+ {
+ "case": "braille",
+ "type": "618"
+ },
+ {
+ "case": "testdev",
+ "type": "618"
+ },
+ {
+ "case": "stdio",
+ "type": "620"
+ },
+ {
+ "case": "spicevmc",
+ "type": "621"
+ },
+ {
+ "case": "spiceport",
+ "type": "622"
+ },
+ {
+ "case": "qemu-vdagent",
+ "type": "623"
+ },
+ {
+ "case": "dbus",
+ "type": "624"
+ },
+ {
+ "case": "vc",
+ "type": "625"
+ },
+ {
+ "case": "ringbuf",
+ "type": "626"
+ },
+ {
+ "case": "memory",
+ "type": "626"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "613"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "368",
+ "members": [
+ {
+ "name": "elf"
+ },
+ {
+ "name": "kdump-zlib"
+ },
+ {
+ "name": "kdump-lzo"
+ },
+ {
+ "name": "kdump-snappy"
+ },
+ {
+ "name": "kdump-raw-zlib"
+ },
+ {
+ "name": "kdump-raw-lzo"
+ },
+ {
+ "name": "kdump-raw-snappy"
+ },
+ {
+ "name": "win-dmp"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "elf",
+ "kdump-zlib",
+ "kdump-lzo",
+ "kdump-snappy",
+ "kdump-raw-zlib",
+ "kdump-raw-lzo",
+ "kdump-raw-snappy",
+ "win-dmp"
+ ]
+ },
+ {
+ "name": "369",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "active"
+ },
+ {
+ "name": "completed"
+ },
+ {
+ "name": "failed"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "active",
+ "completed",
+ "failed"
+ ]
+ },
+ {
+ "name": "[368]",
+ "element-type": "368",
+ "meta-type": "array"
+ },
+ {
+ "name": "370",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "nic"
+ },
+ {
+ "name": "user"
+ },
+ {
+ "name": "tap"
+ },
+ {
+ "name": "l2tpv3"
+ },
+ {
+ "name": "socket"
+ },
+ {
+ "name": "stream"
+ },
+ {
+ "name": "dgram"
+ },
+ {
+ "name": "vde"
+ },
+ {
+ "name": "bridge"
+ },
+ {
+ "name": "hubport"
+ },
+ {
+ "name": "netmap"
+ },
+ {
+ "name": "vhost-user"
+ },
+ {
+ "name": "vhost-vdpa"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "nic",
+ "user",
+ "tap",
+ "l2tpv3",
+ "socket",
+ "stream",
+ "dgram",
+ "vde",
+ "bridge",
+ "hubport",
+ "netmap",
+ "vhost-user",
+ "vhost-vdpa"
+ ]
+ },
+ {
+ "name": "371",
+ "members": [
+ {
+ "name": "netdev",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "macaddr",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "model",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "addr",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "vectors",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "372",
+ "members": [
+ {
+ "name": "hostname",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "restrict",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "ipv4",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "ipv6",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "ip",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "net",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "host",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "tftp",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "bootfile",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "dhcpstart",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "dns",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "dnssearch",
+ "default": null,
+ "type": "[627]"
+ },
+ {
+ "name": "domainname",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "ipv6-prefix",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "ipv6-prefixlen",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "ipv6-host",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "ipv6-dns",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "smb",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "smbserver",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "hostfwd",
+ "default": null,
+ "type": "[627]"
+ },
+ {
+ "name": "guestfwd",
+ "default": null,
+ "type": "[627]"
+ },
+ {
+ "name": "tftp-server-name",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "373",
+ "members": [
+ {
+ "name": "ifname",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "fd",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "fds",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "script",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "downscript",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "br",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "helper",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "sndbuf",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "vnet_hdr",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "vhost",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "vhostfd",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "vhostfds",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "vhostforce",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "queues",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "poll-us",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "374",
+ "members": [
+ {
+ "name": "src",
+ "type": "str"
+ },
+ {
+ "name": "dst",
+ "type": "str"
+ },
+ {
+ "name": "srcport",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "dstport",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "ipv6",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "udp",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "cookie64",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "counter",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "pincounter",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "txcookie",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "rxcookie",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "txsession",
+ "type": "int"
+ },
+ {
+ "name": "rxsession",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "offset",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "375",
+ "members": [
+ {
+ "name": "fd",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "listen",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "connect",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "mcast",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "localaddr",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "udp",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "376",
+ "members": [
+ {
+ "name": "addr",
+ "type": "389"
+ },
+ {
+ "name": "server",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "reconnect",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "377",
+ "members": [
+ {
+ "name": "local",
+ "default": null,
+ "type": "389"
+ },
+ {
+ "name": "remote",
+ "default": null,
+ "type": "389"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "378",
+ "members": [
+ {
+ "name": "sock",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "port",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "group",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "mode",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "379",
+ "members": [
+ {
+ "name": "br",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "helper",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "380",
+ "members": [
+ {
+ "name": "hubid",
+ "type": "int"
+ },
+ {
+ "name": "netdev",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "381",
+ "members": [
+ {
+ "name": "ifname",
+ "type": "str"
+ },
+ {
+ "name": "devname",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "383",
+ "members": [
+ {
+ "name": "chardev",
+ "type": "str"
+ },
+ {
+ "name": "vhostforce",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "queues",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "384",
+ "members": [
+ {
+ "name": "vhostdev",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "vhostfd",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "queues",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "x-svq",
+ "default": null,
+ "type": "bool",
+ "features": [
+ "unstable"
+ ]
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "388",
+ "members": [
+ {
+ "name": "normal"
+ },
+ {
+ "name": "none"
+ },
+ {
+ "name": "all"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "normal",
+ "none",
+ "all"
+ ]
+ },
+ {
+ "name": "[str]",
+ "element-type": "str",
+ "meta-type": "array"
+ },
+ {
+ "name": "389",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "inet",
+ "type": "589"
+ },
+ {
+ "case": "unix",
+ "type": "629"
+ },
+ {
+ "case": "vsock",
+ "type": "630"
+ },
+ {
+ "case": "fd",
+ "type": "631"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "607"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "390",
+ "members": [
+ {
+ "name": "rss"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "rss"
+ ]
+ },
+ {
+ "name": "391",
+ "members": [
+ {
+ "name": "half"
+ },
+ {
+ "name": "full"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "half",
+ "full"
+ ]
+ },
+ {
+ "name": "392",
+ "members": [
+ {
+ "name": "off"
+ },
+ {
+ "name": "on"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "off",
+ "on"
+ ]
+ },
+ {
+ "name": "393",
+ "members": [
+ {
+ "name": "priority",
+ "type": "int"
+ },
+ {
+ "name": "tbl-id",
+ "type": "int"
+ },
+ {
+ "name": "in-pport",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "tunnel-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "vlan-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "eth-type",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "eth-src",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "eth-dst",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "ip-proto",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "ip-tos",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "ip-dst",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "394",
+ "members": [
+ {
+ "name": "in-pport",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "tunnel-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "vlan-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "eth-src",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "eth-dst",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "ip-proto",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "ip-tos",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "395",
+ "members": [
+ {
+ "name": "goto-tbl",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "group-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "tunnel-lport",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "vlan-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "new-vlan-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "out-pport",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "396",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "passthrough",
+ "type": "632"
+ },
+ {
+ "case": "emulator",
+ "type": "633"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "121"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "397",
+ "members": [
+ {
+ "name": "vnc"
+ },
+ {
+ "name": "spice"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "vnc",
+ "spice"
+ ]
+ },
+ {
+ "name": "398",
+ "members": [
+ {
+ "name": "keep"
+ },
+ {
+ "name": "fail"
+ },
+ {
+ "name": "disconnect"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "keep",
+ "fail",
+ "disconnect"
+ ]
+ },
+ {
+ "name": "399",
+ "members": [
+ {
+ "name": "display",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "400",
+ "members": [
+ {
+ "name": "display",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "401",
+ "members": [
+ {
+ "name": "ppm"
+ },
+ {
+ "name": "png"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "ppm",
+ "png"
+ ]
+ },
+ {
+ "name": "402",
+ "members": [
+ {
+ "name": "client"
+ },
+ {
+ "name": "server"
+ },
+ {
+ "name": "unknown"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "client",
+ "server",
+ "unknown"
+ ]
+ },
+ {
+ "name": "[403]",
+ "element-type": "403",
+ "meta-type": "array"
+ },
+ {
+ "name": "403",
+ "members": [
+ {
+ "name": "host",
+ "type": "str"
+ },
+ {
+ "name": "port",
+ "type": "str"
+ },
+ {
+ "name": "family",
+ "type": "406"
+ },
+ {
+ "name": "connection-id",
+ "type": "int"
+ },
+ {
+ "name": "channel-type",
+ "type": "int"
+ },
+ {
+ "name": "channel-id",
+ "type": "int"
+ },
+ {
+ "name": "tls",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "404",
+ "members": [
+ {
+ "name": "host",
+ "type": "str"
+ },
+ {
+ "name": "port",
+ "type": "str"
+ },
+ {
+ "name": "family",
+ "type": "406"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "405",
+ "members": [
+ {
+ "name": "host",
+ "type": "str"
+ },
+ {
+ "name": "port",
+ "type": "str"
+ },
+ {
+ "name": "family",
+ "type": "406"
+ },
+ {
+ "name": "auth",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "406",
+ "members": [
+ {
+ "name": "ipv4"
+ },
+ {
+ "name": "ipv6"
+ },
+ {
+ "name": "unix"
+ },
+ {
+ "name": "vsock"
+ },
+ {
+ "name": "unknown"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "ipv4",
+ "ipv6",
+ "unix",
+ "vsock",
+ "unknown"
+ ]
+ },
+ {
+ "name": "[407]",
+ "element-type": "407",
+ "meta-type": "array"
+ },
+ {
+ "name": "407",
+ "members": [
+ {
+ "name": "host",
+ "type": "str"
+ },
+ {
+ "name": "service",
+ "type": "str"
+ },
+ {
+ "name": "family",
+ "type": "406"
+ },
+ {
+ "name": "websocket",
+ "type": "bool"
+ },
+ {
+ "name": "x509_dname",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "sasl_username",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[408]",
+ "element-type": "408",
+ "meta-type": "array"
+ },
+ {
+ "name": "408",
+ "members": [
+ {
+ "name": "host",
+ "type": "str"
+ },
+ {
+ "name": "service",
+ "type": "str"
+ },
+ {
+ "name": "family",
+ "type": "406"
+ },
+ {
+ "name": "websocket",
+ "type": "bool"
+ },
+ {
+ "name": "auth",
+ "type": "409"
+ },
+ {
+ "name": "vencrypt",
+ "default": null,
+ "type": "410"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "409",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "vnc"
+ },
+ {
+ "name": "ra2"
+ },
+ {
+ "name": "ra2ne"
+ },
+ {
+ "name": "tight"
+ },
+ {
+ "name": "ultra"
+ },
+ {
+ "name": "tls"
+ },
+ {
+ "name": "vencrypt"
+ },
+ {
+ "name": "sasl"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "vnc",
+ "ra2",
+ "ra2ne",
+ "tight",
+ "ultra",
+ "tls",
+ "vencrypt",
+ "sasl"
+ ]
+ },
+ {
+ "name": "410",
+ "members": [
+ {
+ "name": "plain"
+ },
+ {
+ "name": "tls-none"
+ },
+ {
+ "name": "x509-none"
+ },
+ {
+ "name": "tls-vnc"
+ },
+ {
+ "name": "x509-vnc"
+ },
+ {
+ "name": "tls-plain"
+ },
+ {
+ "name": "x509-plain"
+ },
+ {
+ "name": "tls-sasl"
+ },
+ {
+ "name": "x509-sasl"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "plain",
+ "tls-none",
+ "x509-none",
+ "tls-vnc",
+ "x509-vnc",
+ "tls-plain",
+ "x509-plain",
+ "tls-sasl",
+ "x509-sasl"
+ ]
+ },
+ {
+ "name": "411",
+ "members": [
+ {
+ "name": "host",
+ "type": "str"
+ },
+ {
+ "name": "service",
+ "type": "str"
+ },
+ {
+ "name": "family",
+ "type": "406"
+ },
+ {
+ "name": "websocket",
+ "type": "bool"
+ },
+ {
+ "name": "auth",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "412",
+ "members": [
+ {
+ "name": "host",
+ "type": "str"
+ },
+ {
+ "name": "service",
+ "type": "str"
+ },
+ {
+ "name": "family",
+ "type": "406"
+ },
+ {
+ "name": "websocket",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[413]",
+ "element-type": "413",
+ "meta-type": "array"
+ },
+ {
+ "name": "413",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "number",
+ "type": "635"
+ },
+ {
+ "case": "qcode",
+ "type": "636"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "634"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[414]",
+ "element-type": "414",
+ "meta-type": "array"
+ },
+ {
+ "name": "414",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "key",
+ "type": "638"
+ },
+ {
+ "case": "btn",
+ "type": "639"
+ },
+ {
+ "case": "rel",
+ "type": "640"
+ },
+ {
+ "case": "abs",
+ "type": "640"
+ },
+ {
+ "case": "mtt",
+ "type": "641"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "637"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "415",
+ "members": [
+ {
+ "name": "default"
+ },
+ {
+ "name": "none"
+ },
+ {
+ "name": "sdl"
+ },
+ {
+ "name": "egl-headless"
+ },
+ {
+ "name": "curses"
+ },
+ {
+ "name": "spice-app"
+ },
+ {
+ "name": "dbus"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "default",
+ "none",
+ "sdl",
+ "egl-headless",
+ "curses",
+ "spice-app",
+ "dbus"
+ ]
+ },
+ {
+ "name": "416",
+ "members": [
+ {
+ "name": "off"
+ },
+ {
+ "name": "on"
+ },
+ {
+ "name": "core"
+ },
+ {
+ "name": "es"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "off",
+ "on",
+ "core",
+ "es"
+ ]
+ },
+ {
+ "name": "417",
+ "members": [
+ {
+ "name": "grab-on-hover",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "zoom-to-fit",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "show-tabs",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "show-menubar",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "418",
+ "members": [
+ {
+ "name": "left-command-key",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "full-grab",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "swap-opt-cmd",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "zoom-to-fit",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "zoom-interpolation",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "419",
+ "members": [
+ {
+ "name": "charset",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "420",
+ "members": [
+ {
+ "name": "rendernode",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "421",
+ "members": [
+ {
+ "name": "rendernode",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "addr",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "p2p",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "audiodev",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "422",
+ "members": [
+ {
+ "name": "grab-mod",
+ "default": null,
+ "type": "642"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "423",
+ "members": [
+ {
+ "name": "vnc"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "vnc"
+ ]
+ },
+ {
+ "name": "424",
+ "members": [
+ {
+ "name": "tls-certs",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "425",
+ "members": [
+ {
+ "name": "vnc"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "vnc"
+ ]
+ },
+ {
+ "name": "426",
+ "members": [
+ {
+ "name": "addresses",
+ "default": null,
+ "type": "[389]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "427",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "setup"
+ },
+ {
+ "name": "cancelling"
+ },
+ {
+ "name": "cancelled"
+ },
+ {
+ "name": "active"
+ },
+ {
+ "name": "postcopy-active"
+ },
+ {
+ "name": "postcopy-paused"
+ },
+ {
+ "name": "postcopy-recover"
+ },
+ {
+ "name": "completed"
+ },
+ {
+ "name": "failed"
+ },
+ {
+ "name": "colo"
+ },
+ {
+ "name": "pre-switchover"
+ },
+ {
+ "name": "device"
+ },
+ {
+ "name": "wait-unplug"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "setup",
+ "cancelling",
+ "cancelled",
+ "active",
+ "postcopy-active",
+ "postcopy-paused",
+ "postcopy-recover",
+ "completed",
+ "failed",
+ "colo",
+ "pre-switchover",
+ "device",
+ "wait-unplug"
+ ]
+ },
+ {
+ "name": "428",
+ "members": [
+ {
+ "name": "transferred",
+ "type": "int"
+ },
+ {
+ "name": "remaining",
+ "type": "int"
+ },
+ {
+ "name": "total",
+ "type": "int"
+ },
+ {
+ "name": "duplicate",
+ "type": "int"
+ },
+ {
+ "name": "normal",
+ "type": "int"
+ },
+ {
+ "name": "normal-bytes",
+ "type": "int"
+ },
+ {
+ "name": "dirty-pages-rate",
+ "type": "int"
+ },
+ {
+ "name": "mbps",
+ "type": "number"
+ },
+ {
+ "name": "dirty-sync-count",
+ "type": "int"
+ },
+ {
+ "name": "postcopy-requests",
+ "type": "int"
+ },
+ {
+ "name": "page-size",
+ "type": "int"
+ },
+ {
+ "name": "multifd-bytes",
+ "type": "int"
+ },
+ {
+ "name": "pages-per-second",
+ "type": "int"
+ },
+ {
+ "name": "precopy-bytes",
+ "type": "int"
+ },
+ {
+ "name": "downtime-bytes",
+ "type": "int"
+ },
+ {
+ "name": "postcopy-bytes",
+ "type": "int"
+ },
+ {
+ "name": "dirty-sync-missed-zero-copy",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "429",
+ "members": [
+ {
+ "name": "transferred",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "430",
+ "members": [
+ {
+ "name": "cache-size",
+ "type": "int"
+ },
+ {
+ "name": "bytes",
+ "type": "int"
+ },
+ {
+ "name": "pages",
+ "type": "int"
+ },
+ {
+ "name": "cache-miss",
+ "type": "int"
+ },
+ {
+ "name": "cache-miss-rate",
+ "type": "number"
+ },
+ {
+ "name": "encoding-rate",
+ "type": "number"
+ },
+ {
+ "name": "overflow",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[389]",
+ "element-type": "389",
+ "meta-type": "array"
+ },
+ {
+ "name": "431",
+ "members": [
+ {
+ "name": "xbzrle"
+ },
+ {
+ "name": "rdma-pin-all"
+ },
+ {
+ "name": "auto-converge"
+ },
+ {
+ "name": "zero-blocks"
+ },
+ {
+ "name": "events"
+ },
+ {
+ "name": "postcopy-ram"
+ },
+ {
+ "name": "x-colo",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "release-ram"
+ },
+ {
+ "name": "return-path"
+ },
+ {
+ "name": "pause-before-switchover"
+ },
+ {
+ "name": "multifd"
+ },
+ {
+ "name": "dirty-bitmaps"
+ },
+ {
+ "name": "postcopy-blocktime"
+ },
+ {
+ "name": "late-block-activate"
+ },
+ {
+ "name": "x-ignore-shared",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "validate-uuid"
+ },
+ {
+ "name": "background-snapshot"
+ },
+ {
+ "name": "zero-copy-send"
+ },
+ {
+ "name": "postcopy-preempt"
+ },
+ {
+ "name": "switchover-ack"
+ },
+ {
+ "name": "dirty-limit"
+ },
+ {
+ "name": "mapped-ram"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "xbzrle",
+ "rdma-pin-all",
+ "auto-converge",
+ "zero-blocks",
+ "events",
+ "postcopy-ram",
+ "x-colo",
+ "release-ram",
+ "return-path",
+ "pause-before-switchover",
+ "multifd",
+ "dirty-bitmaps",
+ "postcopy-blocktime",
+ "late-block-activate",
+ "x-ignore-shared",
+ "validate-uuid",
+ "background-snapshot",
+ "zero-copy-send",
+ "postcopy-preempt",
+ "switchover-ack",
+ "dirty-limit",
+ "mapped-ram"
+ ]
+ },
+ {
+ "name": "432",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "zlib"
+ },
+ {
+ "name": "zstd"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "zlib",
+ "zstd"
+ ]
+ },
+ {
+ "name": "[433]",
+ "element-type": "433",
+ "meta-type": "array"
+ },
+ {
+ "name": "433",
+ "members": [
+ {
+ "name": "node-name",
+ "type": "str"
+ },
+ {
+ "name": "alias",
+ "type": "str"
+ },
+ {
+ "name": "bitmaps",
+ "type": "[643]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "434",
+ "members": [
+ {
+ "name": "normal"
+ },
+ {
+ "name": "cpr-reboot"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "normal",
+ "cpr-reboot"
+ ]
+ },
+ {
+ "name": "435",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "legacy"
+ },
+ {
+ "name": "multifd"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "legacy",
+ "multifd"
+ ]
+ },
+ {
+ "name": "436",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "primary"
+ },
+ {
+ "name": "secondary"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "primary",
+ "secondary"
+ ]
+ },
+ {
+ "name": "437",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "request"
+ },
+ {
+ "name": "error"
+ },
+ {
+ "name": "processing"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "request",
+ "error",
+ "processing"
+ ]
+ },
+ {
+ "name": "[438]",
+ "element-type": "438",
+ "meta-type": "array"
+ },
+ {
+ "name": "438",
+ "members": [
+ {
+ "name": "channel-type",
+ "type": "644"
+ },
+ {
+ "name": "addr",
+ "type": "645"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "439",
+ "members": [
+ {
+ "name": "second"
+ },
+ {
+ "name": "millisecond"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "second",
+ "millisecond"
+ ]
+ },
+ {
+ "name": "440",
+ "members": [
+ {
+ "name": "page-sampling"
+ },
+ {
+ "name": "dirty-ring"
+ },
+ {
+ "name": "dirty-bitmap"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "page-sampling",
+ "dirty-ring",
+ "dirty-bitmap"
+ ]
+ },
+ {
+ "name": "441",
+ "members": [
+ {
+ "name": "unstarted"
+ },
+ {
+ "name": "measuring"
+ },
+ {
+ "name": "measured"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "unstarted",
+ "measuring",
+ "measured"
+ ]
+ },
+ {
+ "name": "[442]",
+ "element-type": "442",
+ "meta-type": "array"
+ },
+ {
+ "name": "442",
+ "members": [
+ {
+ "name": "id",
+ "type": "int"
+ },
+ {
+ "name": "dirty-rate",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[443]",
+ "element-type": "443",
+ "meta-type": "array"
+ },
+ {
+ "name": "443",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "abort",
+ "type": "647"
+ },
+ {
+ "case": "block-dirty-bitmap-add",
+ "type": "648"
+ },
+ {
+ "case": "block-dirty-bitmap-remove",
+ "type": "649"
+ },
+ {
+ "case": "block-dirty-bitmap-clear",
+ "type": "649"
+ },
+ {
+ "case": "block-dirty-bitmap-enable",
+ "type": "649"
+ },
+ {
+ "case": "block-dirty-bitmap-disable",
+ "type": "649"
+ },
+ {
+ "case": "block-dirty-bitmap-merge",
+ "type": "650"
+ },
+ {
+ "case": "blockdev-backup",
+ "type": "651"
+ },
+ {
+ "case": "blockdev-snapshot",
+ "type": "652"
+ },
+ {
+ "case": "blockdev-snapshot-internal-sync",
+ "type": "653"
+ },
+ {
+ "case": "blockdev-snapshot-sync",
+ "type": "654"
+ },
+ {
+ "case": "drive-backup",
+ "type": "655"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "646"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "444",
+ "members": [
+ {
+ "name": "completion-mode",
+ "default": null,
+ "type": "656"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "445",
+ "members": [
+ {
+ "name": "unavailable"
+ },
+ {
+ "name": "disabled"
+ },
+ {
+ "name": "enabled"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "unavailable",
+ "disabled",
+ "enabled"
+ ]
+ },
+ {
+ "name": "[446]",
+ "element-type": "446",
+ "meta-type": "array"
+ },
+ {
+ "name": "446",
+ "members": [
+ {
+ "name": "oob"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "oob"
+ ]
+ },
+ {
+ "name": "447",
+ "members": [
+ {
+ "name": "major",
+ "type": "int"
+ },
+ {
+ "name": "minor",
+ "type": "int"
+ },
+ {
+ "name": "micro",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "448",
+ "members": [
+ {
+ "name": "builtin"
+ },
+ {
+ "name": "enum"
+ },
+ {
+ "name": "array"
+ },
+ {
+ "name": "object"
+ },
+ {
+ "name": "alternate"
+ },
+ {
+ "name": "command"
+ },
+ {
+ "name": "event"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "builtin",
+ "enum",
+ "array",
+ "object",
+ "alternate",
+ "command",
+ "event"
+ ]
+ },
+ {
+ "name": "449",
+ "members": [
+ {
+ "name": "json-type",
+ "type": "657"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "450",
+ "members": [
+ {
+ "name": "members",
+ "type": "[658]"
+ },
+ {
+ "name": "values",
+ "type": "[str]",
+ "features": [
+ "deprecated"
+ ]
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "451",
+ "members": [
+ {
+ "name": "element-type",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "452",
+ "members": [
+ {
+ "name": "members",
+ "type": "[659]"
+ },
+ {
+ "name": "tag",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "variants",
+ "default": null,
+ "type": "[660]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "453",
+ "members": [
+ {
+ "name": "members",
+ "type": "[661]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "454",
+ "members": [
+ {
+ "name": "arg-type",
+ "type": "str"
+ },
+ {
+ "name": "ret-type",
+ "type": "str"
+ },
+ {
+ "name": "allow-oob",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "455",
+ "members": [
+ {
+ "name": "arg-type",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "456",
+ "members": [
+ {
+ "name": "acpi-generic-initiator"
+ },
+ {
+ "name": "authz-list"
+ },
+ {
+ "name": "authz-listfile"
+ },
+ {
+ "name": "authz-pam"
+ },
+ {
+ "name": "authz-simple"
+ },
+ {
+ "name": "can-bus"
+ },
+ {
+ "name": "can-host-socketcan"
+ },
+ {
+ "name": "colo-compare"
+ },
+ {
+ "name": "cryptodev-backend"
+ },
+ {
+ "name": "cryptodev-backend-builtin"
+ },
+ {
+ "name": "cryptodev-backend-lkcf"
+ },
+ {
+ "name": "cryptodev-vhost-user"
+ },
+ {
+ "name": "dbus-vmstate"
+ },
+ {
+ "name": "filter-buffer"
+ },
+ {
+ "name": "filter-dump"
+ },
+ {
+ "name": "filter-mirror"
+ },
+ {
+ "name": "filter-redirector"
+ },
+ {
+ "name": "filter-replay"
+ },
+ {
+ "name": "filter-rewriter"
+ },
+ {
+ "name": "input-barrier"
+ },
+ {
+ "name": "input-linux"
+ },
+ {
+ "name": "iommufd"
+ },
+ {
+ "name": "iothread"
+ },
+ {
+ "name": "main-loop"
+ },
+ {
+ "name": "memory-backend-epc"
+ },
+ {
+ "name": "memory-backend-file"
+ },
+ {
+ "name": "memory-backend-memfd"
+ },
+ {
+ "name": "memory-backend-ram"
+ },
+ {
+ "name": "pef-guest"
+ },
+ {
+ "name": "pr-manager-helper"
+ },
+ {
+ "name": "qtest"
+ },
+ {
+ "name": "rng-builtin"
+ },
+ {
+ "name": "rng-egd"
+ },
+ {
+ "name": "rng-random"
+ },
+ {
+ "name": "secret"
+ },
+ {
+ "name": "secret_keyring"
+ },
+ {
+ "name": "sev-guest"
+ },
+ {
+ "name": "thread-context"
+ },
+ {
+ "name": "s390-pv-guest"
+ },
+ {
+ "name": "throttle-group"
+ },
+ {
+ "name": "tls-creds-anon"
+ },
+ {
+ "name": "tls-creds-psk"
+ },
+ {
+ "name": "tls-creds-x509"
+ },
+ {
+ "name": "tls-cipher-suites"
+ },
+ {
+ "name": "x-remote-object",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-vfio-user-server",
+ "features": [
+ "unstable"
+ ]
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "acpi-generic-initiator",
+ "authz-list",
+ "authz-listfile",
+ "authz-pam",
+ "authz-simple",
+ "can-bus",
+ "can-host-socketcan",
+ "colo-compare",
+ "cryptodev-backend",
+ "cryptodev-backend-builtin",
+ "cryptodev-backend-lkcf",
+ "cryptodev-vhost-user",
+ "dbus-vmstate",
+ "filter-buffer",
+ "filter-dump",
+ "filter-mirror",
+ "filter-redirector",
+ "filter-replay",
+ "filter-rewriter",
+ "input-barrier",
+ "input-linux",
+ "iommufd",
+ "iothread",
+ "main-loop",
+ "memory-backend-epc",
+ "memory-backend-file",
+ "memory-backend-memfd",
+ "memory-backend-ram",
+ "pef-guest",
+ "pr-manager-helper",
+ "qtest",
+ "rng-builtin",
+ "rng-egd",
+ "rng-random",
+ "secret",
+ "secret_keyring",
+ "sev-guest",
+ "thread-context",
+ "s390-pv-guest",
+ "throttle-group",
+ "tls-creds-anon",
+ "tls-creds-psk",
+ "tls-creds-x509",
+ "tls-cipher-suites",
+ "x-remote-object",
+ "x-vfio-user-server"
+ ]
+ },
+ {
+ "name": "457",
+ "members": [
+ {
+ "name": "pci-dev",
+ "type": "str"
+ },
+ {
+ "name": "node",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "458",
+ "members": [
+ {
+ "name": "policy",
+ "default": null,
+ "type": "662"
+ },
+ {
+ "name": "rules",
+ "default": null,
+ "type": "[663]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "459",
+ "members": [
+ {
+ "name": "filename",
+ "type": "str"
+ },
+ {
+ "name": "refresh",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "460",
+ "members": [
+ {
+ "name": "service",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "461",
+ "members": [
+ {
+ "name": "identity",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "462",
+ "members": [
+ {
+ "name": "if",
+ "type": "str"
+ },
+ {
+ "name": "canbus",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "463",
+ "members": [
+ {
+ "name": "primary_in",
+ "type": "str"
+ },
+ {
+ "name": "secondary_in",
+ "type": "str"
+ },
+ {
+ "name": "outdev",
+ "type": "str"
+ },
+ {
+ "name": "iothread",
+ "type": "str"
+ },
+ {
+ "name": "notify_dev",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "compare_timeout",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "expired_scan_cycle",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "max_queue_size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "vnet_hdr_support",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "464",
+ "members": [
+ {
+ "name": "queues",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "throttle-bps",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "throttle-ops",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "465",
+ "members": [
+ {
+ "name": "queues",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "throttle-bps",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "throttle-ops",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "chardev",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "466",
+ "members": [
+ {
+ "name": "addr",
+ "type": "str"
+ },
+ {
+ "name": "id-list",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "467",
+ "members": [
+ {
+ "name": "netdev",
+ "type": "str"
+ },
+ {
+ "name": "queue",
+ "default": null,
+ "type": "664"
+ },
+ {
+ "name": "status",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "position",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "insert",
+ "default": null,
+ "type": "665"
+ },
+ {
+ "name": "interval",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "468",
+ "members": [
+ {
+ "name": "netdev",
+ "type": "str"
+ },
+ {
+ "name": "queue",
+ "default": null,
+ "type": "664"
+ },
+ {
+ "name": "status",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "position",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "insert",
+ "default": null,
+ "type": "665"
+ },
+ {
+ "name": "file",
+ "type": "str"
+ },
+ {
+ "name": "maxlen",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "469",
+ "members": [
+ {
+ "name": "netdev",
+ "type": "str"
+ },
+ {
+ "name": "queue",
+ "default": null,
+ "type": "664"
+ },
+ {
+ "name": "status",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "position",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "insert",
+ "default": null,
+ "type": "665"
+ },
+ {
+ "name": "outdev",
+ "type": "str"
+ },
+ {
+ "name": "vnet_hdr_support",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "470",
+ "members": [
+ {
+ "name": "netdev",
+ "type": "str"
+ },
+ {
+ "name": "queue",
+ "default": null,
+ "type": "664"
+ },
+ {
+ "name": "status",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "position",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "insert",
+ "default": null,
+ "type": "665"
+ },
+ {
+ "name": "indev",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "outdev",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "vnet_hdr_support",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "471",
+ "members": [
+ {
+ "name": "netdev",
+ "type": "str"
+ },
+ {
+ "name": "queue",
+ "default": null,
+ "type": "664"
+ },
+ {
+ "name": "status",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "position",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "insert",
+ "default": null,
+ "type": "665"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "472",
+ "members": [
+ {
+ "name": "netdev",
+ "type": "str"
+ },
+ {
+ "name": "queue",
+ "default": null,
+ "type": "664"
+ },
+ {
+ "name": "status",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "position",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "insert",
+ "default": null,
+ "type": "665"
+ },
+ {
+ "name": "vnet_hdr_support",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "473",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "server",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "port",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "x-origin",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "y-origin",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "width",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "height",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "474",
+ "members": [
+ {
+ "name": "evdev",
+ "type": "str"
+ },
+ {
+ "name": "grab_all",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "repeat",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "grab-toggle",
+ "default": null,
+ "type": "666"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "475",
+ "members": [
+ {
+ "name": "fd",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "476",
+ "members": [
+ {
+ "name": "aio-max-batch",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "thread-pool-min",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "thread-pool-max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "poll-max-ns",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "poll-grow",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "poll-shrink",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "477",
+ "members": [
+ {
+ "name": "aio-max-batch",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "thread-pool-min",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "thread-pool-max",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "478",
+ "members": [
+ {
+ "name": "dump",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "default": null,
+ "type": "[int]"
+ },
+ {
+ "name": "merge",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "policy",
+ "default": null,
+ "type": "502"
+ },
+ {
+ "name": "prealloc",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "prealloc-threads",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "prealloc-context",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "share",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "reserve",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "x-use-canonical-path-for-ramblock-id",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "479",
+ "members": [
+ {
+ "name": "dump",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "default": null,
+ "type": "[int]"
+ },
+ {
+ "name": "merge",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "policy",
+ "default": null,
+ "type": "502"
+ },
+ {
+ "name": "prealloc",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "prealloc-threads",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "prealloc-context",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "share",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "reserve",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "x-use-canonical-path-for-ramblock-id",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "align",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "offset",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "discard-data",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "mem-path",
+ "type": "str"
+ },
+ {
+ "name": "pmem",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "readonly",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "rom",
+ "default": null,
+ "type": "575"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "480",
+ "members": [
+ {
+ "name": "dump",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "default": null,
+ "type": "[int]"
+ },
+ {
+ "name": "merge",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "policy",
+ "default": null,
+ "type": "502"
+ },
+ {
+ "name": "prealloc",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "prealloc-threads",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "prealloc-context",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "share",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "reserve",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "x-use-canonical-path-for-ramblock-id",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "hugetlb",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "hugetlbsize",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "seal",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "481",
+ "members": [
+ {
+ "name": "dump",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "default": null,
+ "type": "[int]"
+ },
+ {
+ "name": "merge",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "policy",
+ "default": null,
+ "type": "502"
+ },
+ {
+ "name": "prealloc",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "prealloc-threads",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "prealloc-context",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "share",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "reserve",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "x-use-canonical-path-for-ramblock-id",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "482",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "483",
+ "members": [
+ {
+ "name": "chardev",
+ "type": "str"
+ },
+ {
+ "name": "log",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "484",
+ "members": [
+ {
+ "name": "opened",
+ "default": null,
+ "type": "bool",
+ "features": [
+ "deprecated"
+ ]
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "485",
+ "members": [
+ {
+ "name": "opened",
+ "default": null,
+ "type": "bool",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "chardev",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "486",
+ "members": [
+ {
+ "name": "opened",
+ "default": null,
+ "type": "bool",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "filename",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "487",
+ "members": [
+ {
+ "name": "loaded",
+ "default": null,
+ "type": "bool",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "667"
+ },
+ {
+ "name": "keyid",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "iv",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "data",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "file",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "488",
+ "members": [
+ {
+ "name": "loaded",
+ "default": null,
+ "type": "bool",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "667"
+ },
+ {
+ "name": "keyid",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "iv",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "serial",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "489",
+ "members": [
+ {
+ "name": "sev-device",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "dh-cert-file",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "session-file",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "policy",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "handle",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "cbitpos",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "reduced-phys-bits",
+ "type": "int"
+ },
+ {
+ "name": "kernel-hashes",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "legacy-vm-type",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "490",
+ "members": [
+ {
+ "name": "cpu-affinity",
+ "default": null,
+ "type": "[int]"
+ },
+ {
+ "name": "node-affinity",
+ "default": null,
+ "type": "[int]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "491",
+ "members": [
+ {
+ "name": "limits",
+ "default": null,
+ "type": "668"
+ },
+ {
+ "name": "x-iops-total",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-iops-total-max",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-iops-total-max-length",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-iops-read",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-iops-read-max",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-iops-read-max-length",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-iops-write",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-iops-write-max",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-iops-write-max-length",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-bps-total",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-bps-total-max",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-bps-total-max-length",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-bps-read",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-bps-read-max",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-bps-read-max-length",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-bps-write",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-bps-write-max",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-bps-write-max-length",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ },
+ {
+ "name": "x-iops-size",
+ "default": null,
+ "type": "int",
+ "features": [
+ "unstable"
+ ]
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "492",
+ "members": [
+ {
+ "name": "verify-peer",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "dir",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "endpoint",
+ "default": null,
+ "type": "669"
+ },
+ {
+ "name": "priority",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "loaded",
+ "default": null,
+ "type": "bool",
+ "features": [
+ "deprecated"
+ ]
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "493",
+ "members": [
+ {
+ "name": "verify-peer",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "dir",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "endpoint",
+ "default": null,
+ "type": "669"
+ },
+ {
+ "name": "priority",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "loaded",
+ "default": null,
+ "type": "bool",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "username",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "494",
+ "members": [
+ {
+ "name": "verify-peer",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "dir",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "endpoint",
+ "default": null,
+ "type": "669"
+ },
+ {
+ "name": "priority",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "loaded",
+ "default": null,
+ "type": "bool",
+ "features": [
+ "deprecated"
+ ]
+ },
+ {
+ "name": "sanity-check",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "passwordid",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "495",
+ "members": [
+ {
+ "name": "verify-peer",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "dir",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "endpoint",
+ "default": null,
+ "type": "669"
+ },
+ {
+ "name": "priority",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "496",
+ "members": [
+ {
+ "name": "fd",
+ "type": "str"
+ },
+ {
+ "name": "devid",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "497",
+ "members": [
+ {
+ "name": "socket",
+ "type": "389"
+ },
+ {
+ "name": "device",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "498",
+ "members": [
+ {
+ "name": "node-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "drawer-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "book-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "socket-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "die-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "cluster-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "module-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "core-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "thread-id",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "499",
+ "members": [
+ {
+ "name": "aarch64"
+ },
+ {
+ "name": "alpha"
+ },
+ {
+ "name": "arm"
+ },
+ {
+ "name": "avr"
+ },
+ {
+ "name": "cris"
+ },
+ {
+ "name": "hppa"
+ },
+ {
+ "name": "i386"
+ },
+ {
+ "name": "loongarch64"
+ },
+ {
+ "name": "m68k"
+ },
+ {
+ "name": "microblaze"
+ },
+ {
+ "name": "microblazeel"
+ },
+ {
+ "name": "mips"
+ },
+ {
+ "name": "mips64"
+ },
+ {
+ "name": "mips64el"
+ },
+ {
+ "name": "mipsel"
+ },
+ {
+ "name": "or1k"
+ },
+ {
+ "name": "ppc"
+ },
+ {
+ "name": "ppc64"
+ },
+ {
+ "name": "riscv32"
+ },
+ {
+ "name": "riscv64"
+ },
+ {
+ "name": "rx"
+ },
+ {
+ "name": "s390x"
+ },
+ {
+ "name": "sh4"
+ },
+ {
+ "name": "sh4eb"
+ },
+ {
+ "name": "sparc"
+ },
+ {
+ "name": "sparc64"
+ },
+ {
+ "name": "tricore"
+ },
+ {
+ "name": "x86_64"
+ },
+ {
+ "name": "xtensa"
+ },
+ {
+ "name": "xtensaeb"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "aarch64",
+ "alpha",
+ "arm",
+ "avr",
+ "cris",
+ "hppa",
+ "i386",
+ "loongarch64",
+ "m68k",
+ "microblaze",
+ "microblazeel",
+ "mips",
+ "mips64",
+ "mips64el",
+ "mipsel",
+ "or1k",
+ "ppc",
+ "ppc64",
+ "riscv32",
+ "riscv64",
+ "rx",
+ "s390x",
+ "sh4",
+ "sh4eb",
+ "sparc",
+ "sparc64",
+ "tricore",
+ "x86_64",
+ "xtensa",
+ "xtensaeb"
+ ]
+ },
+ {
+ "name": "500",
+ "members": [
+ {
+ "name": "cpu-state",
+ "type": "670"
+ },
+ {
+ "name": "dedicated",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "entitlement",
+ "default": null,
+ "type": "518"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[501]",
+ "element-type": "501",
+ "meta-type": "array"
+ },
+ {
+ "name": "501",
+ "members": [
+ {
+ "name": "qom-type",
+ "type": "str"
+ },
+ {
+ "name": "property",
+ "type": "str"
+ },
+ {
+ "name": "value",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "502",
+ "members": [
+ {
+ "name": "default"
+ },
+ {
+ "name": "preferred"
+ },
+ {
+ "name": "bind"
+ },
+ {
+ "name": "interleave"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "default",
+ "preferred",
+ "bind",
+ "interleave"
+ ]
+ },
+ {
+ "name": "503",
+ "members": [
+ {
+ "name": "node"
+ },
+ {
+ "name": "dist"
+ },
+ {
+ "name": "cpu"
+ },
+ {
+ "name": "hmat-lb"
+ },
+ {
+ "name": "hmat-cache"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "node",
+ "dist",
+ "cpu",
+ "hmat-lb",
+ "hmat-cache"
+ ]
+ },
+ {
+ "name": "504",
+ "members": [
+ {
+ "name": "nodeid",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "cpus",
+ "default": null,
+ "type": "[int]"
+ },
+ {
+ "name": "mem",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "memdev",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "initiator",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "505",
+ "members": [
+ {
+ "name": "src",
+ "type": "int"
+ },
+ {
+ "name": "dst",
+ "type": "int"
+ },
+ {
+ "name": "val",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "506",
+ "members": [
+ {
+ "name": "node-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "drawer-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "book-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "socket-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "die-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "cluster-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "module-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "core-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "thread-id",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "507",
+ "members": [
+ {
+ "name": "initiator",
+ "type": "int"
+ },
+ {
+ "name": "target",
+ "type": "int"
+ },
+ {
+ "name": "hierarchy",
+ "type": "671"
+ },
+ {
+ "name": "data-type",
+ "type": "672"
+ },
+ {
+ "name": "latency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bandwidth",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "508",
+ "members": [
+ {
+ "name": "node-id",
+ "type": "int"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "level",
+ "type": "int"
+ },
+ {
+ "name": "associativity",
+ "type": "673"
+ },
+ {
+ "name": "policy",
+ "type": "674"
+ },
+ {
+ "name": "line",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "509",
+ "members": [
+ {
+ "name": "dimm"
+ },
+ {
+ "name": "nvdimm"
+ },
+ {
+ "name": "virtio-pmem"
+ },
+ {
+ "name": "virtio-mem"
+ },
+ {
+ "name": "sgx-epc"
+ },
+ {
+ "name": "hv-balloon"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "dimm",
+ "nvdimm",
+ "virtio-pmem",
+ "virtio-mem",
+ "sgx-epc",
+ "hv-balloon"
+ ]
+ },
+ {
+ "name": "510",
+ "members": [
+ {
+ "name": "data",
+ "type": "675"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "511",
+ "members": [
+ {
+ "name": "data",
+ "type": "676"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "512",
+ "members": [
+ {
+ "name": "data",
+ "type": "677"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "513",
+ "members": [
+ {
+ "name": "data",
+ "type": "678"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "514",
+ "members": [
+ {
+ "name": "data",
+ "type": "679"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "515",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "props",
+ "default": null,
+ "type": "any"
+ },
+ {
+ "name": "deprecated-props",
+ "default": null,
+ "type": "[str]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "516",
+ "members": [
+ {
+ "name": "incompatible"
+ },
+ {
+ "name": "identical"
+ },
+ {
+ "name": "superset"
+ },
+ {
+ "name": "subset"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "incompatible",
+ "identical",
+ "superset",
+ "subset"
+ ]
+ },
+ {
+ "name": "517",
+ "members": [
+ {
+ "name": "static"
+ },
+ {
+ "name": "full"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "static",
+ "full"
+ ]
+ },
+ {
+ "name": "518",
+ "members": [
+ {
+ "name": "auto"
+ },
+ {
+ "name": "low"
+ },
+ {
+ "name": "medium"
+ },
+ {
+ "name": "high"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "auto",
+ "low",
+ "medium",
+ "high"
+ ]
+ },
+ {
+ "name": "520",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "record"
+ },
+ {
+ "name": "play"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "record",
+ "play"
+ ]
+ },
+ {
+ "name": "521",
+ "members": [
+ {
+ "name": "block-node"
+ },
+ {
+ "name": "chardev"
+ },
+ {
+ "name": "migration"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "block-node",
+ "chardev",
+ "migration"
+ ]
+ },
+ {
+ "name": "522",
+ "members": [
+ {
+ "name": "node-name",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "523",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[524]",
+ "element-type": "524",
+ "meta-type": "array"
+ },
+ {
+ "name": "524",
+ "members": [
+ {
+ "name": "fd",
+ "type": "int"
+ },
+ {
+ "name": "opaque",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[525]",
+ "element-type": "525",
+ "meta-type": "array"
+ },
+ {
+ "name": "525",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "type",
+ "type": "680"
+ },
+ {
+ "name": "help",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "default",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "526",
+ "members": [
+ {
+ "name": "uninit"
+ },
+ {
+ "name": "launch-update"
+ },
+ {
+ "name": "launch-secret"
+ },
+ {
+ "name": "running"
+ },
+ {
+ "name": "send-update"
+ },
+ {
+ "name": "receive-update"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "uninit",
+ "launch-update",
+ "launch-secret",
+ "running",
+ "send-update",
+ "receive-update"
+ ]
+ },
+ {
+ "name": "[527]",
+ "element-type": "527",
+ "meta-type": "array"
+ },
+ {
+ "name": "527",
+ "members": [
+ {
+ "name": "node",
+ "type": "int"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "528",
+ "members": [
+ {
+ "name": "closed"
+ },
+ {
+ "name": "unbound"
+ },
+ {
+ "name": "interdomain"
+ },
+ {
+ "name": "pirq"
+ },
+ {
+ "name": "virq"
+ },
+ {
+ "name": "ipi"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "closed",
+ "unbound",
+ "interdomain",
+ "pirq",
+ "virq",
+ "ipi"
+ ]
+ },
+ {
+ "name": "529",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "alsa"
+ },
+ {
+ "name": "dbus"
+ },
+ {
+ "name": "oss"
+ },
+ {
+ "name": "pa"
+ },
+ {
+ "name": "sdl"
+ },
+ {
+ "name": "spice"
+ },
+ {
+ "name": "wav"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "alsa",
+ "dbus",
+ "oss",
+ "pa",
+ "sdl",
+ "spice",
+ "wav"
+ ]
+ },
+ {
+ "name": "530",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "681"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "681"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "531",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "682"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "682"
+ },
+ {
+ "name": "threshold",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "532",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "683"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "683"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "533",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "681"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "681"
+ },
+ {
+ "name": "latency",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "534",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "684"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "684"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "535",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "685"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "685"
+ },
+ {
+ "name": "try-mmap",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "exclusive",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "dsp-policy",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "536",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "686"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "686"
+ },
+ {
+ "name": "server",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "537",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "687"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "687"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "538",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "688"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "688"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "539",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "681"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "681"
+ },
+ {
+ "name": "dev",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "latency",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "540",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "681"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "681"
+ },
+ {
+ "name": "path",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "541",
+ "members": [
+ {
+ "name": "DIMM"
+ },
+ {
+ "name": "CPU"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "DIMM",
+ "CPU"
+ ]
+ },
+ {
+ "name": "[542]",
+ "element-type": "542",
+ "meta-type": "array"
+ },
+ {
+ "name": "542",
+ "members": [
+ {
+ "name": "bus",
+ "type": "int"
+ },
+ {
+ "name": "slot",
+ "type": "int"
+ },
+ {
+ "name": "function",
+ "type": "int"
+ },
+ {
+ "name": "class_info",
+ "type": "689"
+ },
+ {
+ "name": "id",
+ "type": "690"
+ },
+ {
+ "name": "irq",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "irq_pin",
+ "type": "int"
+ },
+ {
+ "name": "qdev_id",
+ "type": "str"
+ },
+ {
+ "name": "pci_bridge",
+ "default": null,
+ "type": "691"
+ },
+ {
+ "name": "regions",
+ "type": "[692]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "543",
+ "members": [
+ {
+ "name": "vm"
+ },
+ {
+ "name": "vcpu"
+ },
+ {
+ "name": "cryptodev"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "vm",
+ "vcpu",
+ "cryptodev"
+ ]
+ },
+ {
+ "name": "[544]",
+ "element-type": "544",
+ "meta-type": "array"
+ },
+ {
+ "name": "544",
+ "members": [
+ {
+ "name": "provider",
+ "type": "546"
+ },
+ {
+ "name": "names",
+ "default": null,
+ "type": "[str]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "545",
+ "members": [
+ {
+ "name": "vcpus",
+ "default": null,
+ "type": "[str]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "546",
+ "members": [
+ {
+ "name": "kvm"
+ },
+ {
+ "name": "cryptodev"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "kvm",
+ "cryptodev"
+ ]
+ },
+ {
+ "name": "[547]",
+ "element-type": "547",
+ "meta-type": "array"
+ },
+ {
+ "name": "547",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "value",
+ "type": "693"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[548]",
+ "element-type": "548",
+ "meta-type": "array"
+ },
+ {
+ "name": "548",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "type",
+ "type": "694"
+ },
+ {
+ "name": "unit",
+ "default": null,
+ "type": "695"
+ },
+ {
+ "name": "base",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "exponent",
+ "type": "int"
+ },
+ {
+ "name": "bucket-size",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "549",
+ "members": [
+ {
+ "name": "transports",
+ "type": "[str]"
+ },
+ {
+ "name": "dev-features",
+ "default": null,
+ "type": "[str]"
+ },
+ {
+ "name": "unknown-dev-features",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "550",
+ "members": [
+ {
+ "name": "statuses",
+ "type": "[str]"
+ },
+ {
+ "name": "unknown-statuses",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "551",
+ "members": [
+ {
+ "name": "n-mem-sections",
+ "type": "int"
+ },
+ {
+ "name": "n-tmp-sections",
+ "type": "int"
+ },
+ {
+ "name": "nvqs",
+ "type": "int"
+ },
+ {
+ "name": "vq-index",
+ "type": "int"
+ },
+ {
+ "name": "features",
+ "type": "549"
+ },
+ {
+ "name": "acked-features",
+ "type": "549"
+ },
+ {
+ "name": "backend-features",
+ "type": "549"
+ },
+ {
+ "name": "protocol-features",
+ "type": "696"
+ },
+ {
+ "name": "max-queues",
+ "type": "int"
+ },
+ {
+ "name": "backend-cap",
+ "type": "int"
+ },
+ {
+ "name": "log-enabled",
+ "type": "bool"
+ },
+ {
+ "name": "log-size",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[552]",
+ "element-type": "552",
+ "meta-type": "array"
+ },
+ {
+ "name": "552",
+ "members": [
+ {
+ "name": "addr",
+ "type": "int"
+ },
+ {
+ "name": "len",
+ "type": "int"
+ },
+ {
+ "name": "flags",
+ "type": "[str]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "553",
+ "members": [
+ {
+ "name": "flags",
+ "type": "int"
+ },
+ {
+ "name": "idx",
+ "type": "int"
+ },
+ {
+ "name": "ring",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "554",
+ "members": [
+ {
+ "name": "flags",
+ "type": "int"
+ },
+ {
+ "name": "idx",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "555",
+ "members": [
+ {
+ "name": "stop"
+ },
+ {
+ "name": "running"
+ },
+ {
+ "name": "stop-copy"
+ },
+ {
+ "name": "resuming"
+ },
+ {
+ "name": "running-p2p"
+ },
+ {
+ "name": "pre-copy"
+ },
+ {
+ "name": "pre-copy-p2p"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "stop",
+ "running",
+ "stop-copy",
+ "resuming",
+ "running-p2p",
+ "pre-copy",
+ "pre-copy-p2p"
+ ]
+ },
+ {
+ "name": "[556]",
+ "element-type": "556",
+ "meta-type": "array"
+ },
+ {
+ "name": "556",
+ "members": [
+ {
+ "name": "cipher"
+ },
+ {
+ "name": "hash"
+ },
+ {
+ "name": "mac"
+ },
+ {
+ "name": "aead"
+ },
+ {
+ "name": "akcipher"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "cipher",
+ "hash",
+ "mac",
+ "aead",
+ "akcipher"
+ ]
+ },
+ {
+ "name": "[557]",
+ "element-type": "557",
+ "meta-type": "array"
+ },
+ {
+ "name": "557",
+ "members": [
+ {
+ "name": "queue",
+ "type": "int"
+ },
+ {
+ "name": "type",
+ "type": "697"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "558",
+ "members": [
+ {
+ "name": "informational"
+ },
+ {
+ "name": "warning"
+ },
+ {
+ "name": "failure"
+ },
+ {
+ "name": "fatal"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "informational",
+ "warning",
+ "failure",
+ "fatal"
+ ]
+ },
+ {
+ "name": "[559]",
+ "element-type": "559",
+ "meta-type": "array"
+ },
+ {
+ "name": "559",
+ "members": [
+ {
+ "name": "type",
+ "type": "698"
+ },
+ {
+ "name": "header",
+ "type": "[int]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "560",
+ "members": [
+ {
+ "name": "cache-data-ecc"
+ },
+ {
+ "name": "mem-data-ecc"
+ },
+ {
+ "name": "crc-threshold"
+ },
+ {
+ "name": "retry-threshold"
+ },
+ {
+ "name": "cache-poison-received"
+ },
+ {
+ "name": "mem-poison-received"
+ },
+ {
+ "name": "physical"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "cache-data-ecc",
+ "mem-data-ecc",
+ "crc-threshold",
+ "retry-threshold",
+ "cache-poison-received",
+ "mem-poison-received",
+ "physical"
+ ]
+ },
+ {
+ "name": "561",
+ "members": [
+ {
+ "name": "hyper-v"
+ },
+ {
+ "name": "s390"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "hyper-v",
+ "s390"
+ ]
+ },
+ {
+ "name": "562",
+ "members": [
+ {
+ "name": "arg1",
+ "type": "int"
+ },
+ {
+ "name": "arg2",
+ "type": "int"
+ },
+ {
+ "name": "arg3",
+ "type": "int"
+ },
+ {
+ "name": "arg4",
+ "type": "int"
+ },
+ {
+ "name": "arg5",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "563",
+ "members": [
+ {
+ "name": "core",
+ "type": "int"
+ },
+ {
+ "name": "psw-mask",
+ "type": "int"
+ },
+ {
+ "name": "psw-addr",
+ "type": "int"
+ },
+ {
+ "name": "reason",
+ "type": "699"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[564]",
+ "element-type": "564",
+ "meta-type": "array"
+ },
+ {
+ "name": "564",
+ "members": [
+ {
+ "name": "interval_length",
+ "type": "int"
+ },
+ {
+ "name": "min_rd_latency_ns",
+ "type": "int"
+ },
+ {
+ "name": "max_rd_latency_ns",
+ "type": "int"
+ },
+ {
+ "name": "avg_rd_latency_ns",
+ "type": "int"
+ },
+ {
+ "name": "min_wr_latency_ns",
+ "type": "int"
+ },
+ {
+ "name": "max_wr_latency_ns",
+ "type": "int"
+ },
+ {
+ "name": "avg_wr_latency_ns",
+ "type": "int"
+ },
+ {
+ "name": "min_zone_append_latency_ns",
+ "type": "int"
+ },
+ {
+ "name": "max_zone_append_latency_ns",
+ "type": "int"
+ },
+ {
+ "name": "avg_zone_append_latency_ns",
+ "type": "int"
+ },
+ {
+ "name": "min_flush_latency_ns",
+ "type": "int"
+ },
+ {
+ "name": "max_flush_latency_ns",
+ "type": "int"
+ },
+ {
+ "name": "avg_flush_latency_ns",
+ "type": "int"
+ },
+ {
+ "name": "avg_rd_queue_depth",
+ "type": "number"
+ },
+ {
+ "name": "avg_wr_queue_depth",
+ "type": "number"
+ },
+ {
+ "name": "avg_zone_append_queue_depth",
+ "type": "number"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "565",
+ "members": [
+ {
+ "name": "boundaries",
+ "type": "[int]"
+ },
+ {
+ "name": "bins",
+ "type": "[int]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "566",
+ "members": [
+ {
+ "name": "discard-nb-ok",
+ "type": "int"
+ },
+ {
+ "name": "discard-nb-failed",
+ "type": "int"
+ },
+ {
+ "name": "discard-bytes-ok",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "567",
+ "members": [
+ {
+ "name": "completion-errors",
+ "type": "int"
+ },
+ {
+ "name": "aligned-accesses",
+ "type": "int"
+ },
+ {
+ "name": "unaligned-accesses",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[78]",
+ "element-type": "78",
+ "meta-type": "array"
+ },
+ {
+ "name": "568",
+ "tag": "type",
+ "variants": [
+ {
+ "case": "qcow2",
+ "type": "701"
+ },
+ {
+ "case": "vmdk",
+ "type": "702"
+ },
+ {
+ "case": "luks",
+ "type": "703"
+ },
+ {
+ "case": "rbd",
+ "type": "704"
+ },
+ {
+ "case": "file",
+ "type": "705"
+ }
+ ],
+ "members": [
+ {
+ "name": "type",
+ "type": "700"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "569",
+ "members": [
+ {
+ "name": "block-backend"
+ },
+ {
+ "name": "block-job"
+ },
+ {
+ "name": "block-driver"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "block-backend",
+ "block-job",
+ "block-driver"
+ ]
+ },
+ {
+ "name": "[570]",
+ "element-type": "570",
+ "meta-type": "array"
+ },
+ {
+ "name": "570",
+ "members": [
+ {
+ "name": "consistent-read"
+ },
+ {
+ "name": "write"
+ },
+ {
+ "name": "write-unchanged"
+ },
+ {
+ "name": "resize"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "consistent-read",
+ "write",
+ "write-unchanged",
+ "resize"
+ ]
+ },
+ {
+ "name": "571",
+ "members": [
+ {
+ "type": "58"
+ },
+ {
+ "type": "str"
+ }
+ ],
+ "meta-type": "alternate"
+ },
+ {
+ "name": "[572]",
+ "element-type": "572",
+ "meta-type": "array"
+ },
+ {
+ "name": "572",
+ "members": [
+ {
+ "name": "event",
+ "type": "706"
+ },
+ {
+ "name": "state",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iotype",
+ "default": null,
+ "type": "707"
+ },
+ {
+ "name": "errno",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "sector",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "once",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "immediately",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[573]",
+ "element-type": "573",
+ "meta-type": "array"
+ },
+ {
+ "name": "573",
+ "members": [
+ {
+ "name": "event",
+ "type": "706"
+ },
+ {
+ "name": "state",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "new_state",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "574",
+ "members": [
+ {
+ "name": "break-guest-write"
+ },
+ {
+ "name": "break-snapshot"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "break-guest-write",
+ "break-snapshot"
+ ]
+ },
+ {
+ "name": "575",
+ "members": [
+ {
+ "name": "auto"
+ },
+ {
+ "name": "on"
+ },
+ {
+ "name": "off"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "auto",
+ "on",
+ "off"
+ ]
+ },
+ {
+ "name": "576",
+ "members": [
+ {
+ "name": "threads"
+ },
+ {
+ "name": "native"
+ },
+ {
+ "name": "io_uring"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "threads",
+ "native",
+ "io_uring"
+ ]
+ },
+ {
+ "name": "577",
+ "members": [
+ {
+ "name": "tcp"
+ },
+ {
+ "name": "iser"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "tcp",
+ "iser"
+ ]
+ },
+ {
+ "name": "578",
+ "members": [
+ {
+ "name": "crc32c"
+ },
+ {
+ "name": "none"
+ },
+ {
+ "name": "crc32c-none"
+ },
+ {
+ "name": "none-crc32c"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "crc32c",
+ "none",
+ "crc32c-none",
+ "none-crc32c"
+ ]
+ },
+ {
+ "name": "579",
+ "members": [
+ {
+ "name": "type",
+ "type": "708"
+ },
+ {
+ "name": "host",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "580",
+ "members": [
+ {
+ "type": "58"
+ },
+ {
+ "type": "str"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "meta-type": "alternate"
+ },
+ {
+ "name": "581",
+ "members": [
+ {
+ "type": "709"
+ },
+ {
+ "type": "710"
+ }
+ ],
+ "meta-type": "alternate"
+ },
+ {
+ "name": "582",
+ "tag": "format",
+ "variants": [
+ {
+ "case": "aes",
+ "type": "712"
+ },
+ {
+ "case": "luks",
+ "type": "713"
+ }
+ ],
+ "members": [
+ {
+ "name": "format",
+ "type": "711"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "583",
+ "tag": "format",
+ "variants": [
+ {
+ "case": "aes",
+ "type": "712"
+ }
+ ],
+ "members": [
+ {
+ "name": "format",
+ "type": "714"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[571]",
+ "element-type": "571",
+ "meta-type": "array"
+ },
+ {
+ "name": "584",
+ "members": [
+ {
+ "name": "quorum"
+ },
+ {
+ "name": "fifo"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "quorum",
+ "fifo"
+ ]
+ },
+ {
+ "name": "585",
+ "tag": "format",
+ "variants": [
+ {
+ "case": "luks",
+ "type": "716"
+ },
+ {
+ "case": "luks2",
+ "type": "717"
+ },
+ {
+ "case": "luks-any",
+ "type": "718"
+ }
+ ],
+ "members": [
+ {
+ "name": "format",
+ "type": "715"
+ },
+ {
+ "name": "parent",
+ "default": null,
+ "type": "585"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[586]",
+ "element-type": "586",
+ "meta-type": "array"
+ },
+ {
+ "name": "586",
+ "members": [
+ {
+ "name": "cephx"
+ },
+ {
+ "name": "none"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "cephx",
+ "none"
+ ]
+ },
+ {
+ "name": "[587]",
+ "element-type": "587",
+ "meta-type": "array"
+ },
+ {
+ "name": "587",
+ "members": [
+ {
+ "name": "host",
+ "type": "str"
+ },
+ {
+ "name": "port",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "588",
+ "members": [
+ {
+ "name": "primary"
+ },
+ {
+ "name": "secondary"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "primary",
+ "secondary"
+ ]
+ },
+ {
+ "name": "589",
+ "members": [
+ {
+ "name": "host",
+ "type": "str"
+ },
+ {
+ "name": "port",
+ "type": "str"
+ },
+ {
+ "name": "numeric",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "to",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "ipv4",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "ipv6",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "keep-alive",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "mptcp",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "590",
+ "tag": "mode",
+ "variants": [
+ {
+ "case": "hash",
+ "type": "720"
+ },
+ {
+ "case": "none",
+ "type": "0"
+ },
+ {
+ "case": "known_hosts",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "mode",
+ "type": "719"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "591",
+ "members": [
+ {
+ "name": "filename",
+ "type": "str"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "preallocation",
+ "default": null,
+ "type": "721"
+ },
+ {
+ "name": "nocow",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "extent-size-hint",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "592",
+ "members": [
+ {
+ "name": "location",
+ "type": "328"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "preallocation",
+ "default": null,
+ "type": "721"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "593",
+ "members": [
+ {
+ "name": "key-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "cipher-alg",
+ "default": null,
+ "type": "722"
+ },
+ {
+ "name": "cipher-mode",
+ "default": null,
+ "type": "723"
+ },
+ {
+ "name": "ivgen-alg",
+ "default": null,
+ "type": "724"
+ },
+ {
+ "name": "ivgen-hash-alg",
+ "default": null,
+ "type": "725"
+ },
+ {
+ "name": "hash-alg",
+ "default": null,
+ "type": "725"
+ },
+ {
+ "name": "iter-time",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "detached-header",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "file",
+ "default": null,
+ "type": "571"
+ },
+ {
+ "name": "header",
+ "default": null,
+ "type": "571"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "preallocation",
+ "default": null,
+ "type": "721"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "594",
+ "members": [
+ {
+ "name": "location",
+ "type": "335"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "595",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "cluster-size",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "596",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "backing-file",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "encrypt",
+ "default": null,
+ "type": "726"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "597",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "data-file",
+ "default": null,
+ "type": "571"
+ },
+ {
+ "name": "data-file-raw",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "extended-l2",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "version",
+ "default": null,
+ "type": "727"
+ },
+ {
+ "name": "backing-file",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "backing-fmt",
+ "default": null,
+ "type": "315"
+ },
+ {
+ "name": "encrypt",
+ "default": null,
+ "type": "726"
+ },
+ {
+ "name": "cluster-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "preallocation",
+ "default": null,
+ "type": "721"
+ },
+ {
+ "name": "lazy-refcounts",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "refcount-bits",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "compression-type",
+ "default": null,
+ "type": "728"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "598",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "backing-file",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "backing-fmt",
+ "default": null,
+ "type": "315"
+ },
+ {
+ "name": "cluster-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "table-size",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "599",
+ "members": [
+ {
+ "name": "location",
+ "type": "345"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "cluster-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "encrypt",
+ "default": null,
+ "type": "729"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "600",
+ "members": [
+ {
+ "name": "location",
+ "type": "347"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "601",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "preallocation",
+ "default": null,
+ "type": "721"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "602",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "log-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "block-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "subformat",
+ "default": null,
+ "type": "730"
+ },
+ {
+ "name": "block-state-zero",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "603",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "extents",
+ "default": null,
+ "type": "[571]"
+ },
+ {
+ "name": "subformat",
+ "default": null,
+ "type": "731"
+ },
+ {
+ "name": "backing-file",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "adapter-type",
+ "default": null,
+ "type": "732"
+ },
+ {
+ "name": "hwversion",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "toolsversion",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "zeroed-grain",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "604",
+ "members": [
+ {
+ "name": "file",
+ "type": "571"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "subformat",
+ "default": null,
+ "type": "733"
+ },
+ {
+ "name": "force-size",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "605",
+ "members": [
+ {
+ "name": "state",
+ "type": "734"
+ },
+ {
+ "name": "new-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "old-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "keyslot",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iter-time",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "secret",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "606",
+ "members": [
+ {
+ "name": "encrypt",
+ "default": null,
+ "type": "735"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "null",
+ "json-type": "null",
+ "meta-type": "builtin"
+ },
+ {
+ "name": "607",
+ "members": [
+ {
+ "name": "inet"
+ },
+ {
+ "name": "unix"
+ },
+ {
+ "name": "vsock"
+ },
+ {
+ "name": "fd"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "inet",
+ "unix",
+ "vsock",
+ "fd"
+ ]
+ },
+ {
+ "name": "608",
+ "members": [
+ {
+ "name": "data",
+ "type": "589"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "609",
+ "members": [
+ {
+ "name": "data",
+ "type": "629"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "610",
+ "members": [
+ {
+ "name": "data",
+ "type": "630"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "611",
+ "members": [
+ {
+ "name": "data",
+ "type": "631"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "612",
+ "members": [
+ {
+ "name": "off"
+ },
+ {
+ "name": "on"
+ },
+ {
+ "name": "auto"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "off",
+ "on",
+ "auto"
+ ]
+ },
+ {
+ "name": "613",
+ "members": [
+ {
+ "name": "file"
+ },
+ {
+ "name": "serial"
+ },
+ {
+ "name": "parallel"
+ },
+ {
+ "name": "pipe"
+ },
+ {
+ "name": "socket"
+ },
+ {
+ "name": "udp"
+ },
+ {
+ "name": "pty"
+ },
+ {
+ "name": "null"
+ },
+ {
+ "name": "mux"
+ },
+ {
+ "name": "msmouse"
+ },
+ {
+ "name": "wctablet"
+ },
+ {
+ "name": "braille"
+ },
+ {
+ "name": "testdev"
+ },
+ {
+ "name": "stdio"
+ },
+ {
+ "name": "spicevmc"
+ },
+ {
+ "name": "spiceport"
+ },
+ {
+ "name": "qemu-vdagent"
+ },
+ {
+ "name": "dbus"
+ },
+ {
+ "name": "vc"
+ },
+ {
+ "name": "ringbuf"
+ },
+ {
+ "name": "memory",
+ "features": [
+ "deprecated"
+ ]
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "file",
+ "serial",
+ "parallel",
+ "pipe",
+ "socket",
+ "udp",
+ "pty",
+ "null",
+ "mux",
+ "msmouse",
+ "wctablet",
+ "braille",
+ "testdev",
+ "stdio",
+ "spicevmc",
+ "spiceport",
+ "qemu-vdagent",
+ "dbus",
+ "vc",
+ "ringbuf",
+ "memory"
+ ]
+ },
+ {
+ "name": "614",
+ "members": [
+ {
+ "name": "data",
+ "type": "736"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "615",
+ "members": [
+ {
+ "name": "data",
+ "type": "737"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "616",
+ "members": [
+ {
+ "name": "data",
+ "type": "738"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "617",
+ "members": [
+ {
+ "name": "data",
+ "type": "739"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "618",
+ "members": [
+ {
+ "name": "data",
+ "type": "740"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "619",
+ "members": [
+ {
+ "name": "data",
+ "type": "741"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "620",
+ "members": [
+ {
+ "name": "data",
+ "type": "742"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "621",
+ "members": [
+ {
+ "name": "data",
+ "type": "743"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "622",
+ "members": [
+ {
+ "name": "data",
+ "type": "744"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "623",
+ "members": [
+ {
+ "name": "data",
+ "type": "745"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "624",
+ "members": [
+ {
+ "name": "data",
+ "type": "746"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "625",
+ "members": [
+ {
+ "name": "data",
+ "type": "747"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "626",
+ "members": [
+ {
+ "name": "data",
+ "type": "748"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[627]",
+ "element-type": "627",
+ "meta-type": "array"
+ },
+ {
+ "name": "627",
+ "members": [
+ {
+ "name": "str",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "629",
+ "members": [
+ {
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "abstract",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "tight",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "630",
+ "members": [
+ {
+ "name": "cid",
+ "type": "str"
+ },
+ {
+ "name": "port",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "631",
+ "members": [
+ {
+ "name": "str",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "632",
+ "members": [
+ {
+ "name": "data",
+ "type": "749"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "633",
+ "members": [
+ {
+ "name": "data",
+ "type": "750"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "634",
+ "members": [
+ {
+ "name": "number"
+ },
+ {
+ "name": "qcode"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "number",
+ "qcode"
+ ]
+ },
+ {
+ "name": "635",
+ "members": [
+ {
+ "name": "data",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "636",
+ "members": [
+ {
+ "name": "data",
+ "type": "751"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "637",
+ "members": [
+ {
+ "name": "key"
+ },
+ {
+ "name": "btn"
+ },
+ {
+ "name": "rel"
+ },
+ {
+ "name": "abs"
+ },
+ {
+ "name": "mtt"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "key",
+ "btn",
+ "rel",
+ "abs",
+ "mtt"
+ ]
+ },
+ {
+ "name": "638",
+ "members": [
+ {
+ "name": "data",
+ "type": "752"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "639",
+ "members": [
+ {
+ "name": "data",
+ "type": "753"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "640",
+ "members": [
+ {
+ "name": "data",
+ "type": "754"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "641",
+ "members": [
+ {
+ "name": "data",
+ "type": "755"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "642",
+ "members": [
+ {
+ "name": "lctrl-lalt"
+ },
+ {
+ "name": "lshift-lctrl-lalt"
+ },
+ {
+ "name": "rctrl"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "lctrl-lalt",
+ "lshift-lctrl-lalt",
+ "rctrl"
+ ]
+ },
+ {
+ "name": "number",
+ "json-type": "number",
+ "meta-type": "builtin"
+ },
+ {
+ "name": "[643]",
+ "element-type": "643",
+ "meta-type": "array"
+ },
+ {
+ "name": "643",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "alias",
+ "type": "str"
+ },
+ {
+ "name": "transform",
+ "default": null,
+ "type": "756"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "644",
+ "members": [
+ {
+ "name": "main"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "main"
+ ]
+ },
+ {
+ "name": "645",
+ "tag": "transport",
+ "variants": [
+ {
+ "case": "socket",
+ "type": "389"
+ },
+ {
+ "case": "exec",
+ "type": "758"
+ },
+ {
+ "case": "rdma",
+ "type": "589"
+ },
+ {
+ "case": "file",
+ "type": "759"
+ }
+ ],
+ "members": [
+ {
+ "name": "transport",
+ "type": "757"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "646",
+ "members": [
+ {
+ "name": "abort"
+ },
+ {
+ "name": "block-dirty-bitmap-add"
+ },
+ {
+ "name": "block-dirty-bitmap-remove"
+ },
+ {
+ "name": "block-dirty-bitmap-clear"
+ },
+ {
+ "name": "block-dirty-bitmap-enable"
+ },
+ {
+ "name": "block-dirty-bitmap-disable"
+ },
+ {
+ "name": "block-dirty-bitmap-merge"
+ },
+ {
+ "name": "blockdev-backup"
+ },
+ {
+ "name": "blockdev-snapshot"
+ },
+ {
+ "name": "blockdev-snapshot-internal-sync"
+ },
+ {
+ "name": "blockdev-snapshot-sync"
+ },
+ {
+ "name": "drive-backup",
+ "features": [
+ "deprecated"
+ ]
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "abort",
+ "block-dirty-bitmap-add",
+ "block-dirty-bitmap-remove",
+ "block-dirty-bitmap-clear",
+ "block-dirty-bitmap-enable",
+ "block-dirty-bitmap-disable",
+ "block-dirty-bitmap-merge",
+ "blockdev-backup",
+ "blockdev-snapshot",
+ "blockdev-snapshot-internal-sync",
+ "blockdev-snapshot-sync",
+ "drive-backup"
+ ]
+ },
+ {
+ "name": "647",
+ "members": [
+ {
+ "name": "data",
+ "type": "760"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "648",
+ "members": [
+ {
+ "name": "data",
+ "type": "44"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "649",
+ "members": [
+ {
+ "name": "data",
+ "type": "45"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "650",
+ "members": [
+ {
+ "name": "data",
+ "type": "46"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "651",
+ "members": [
+ {
+ "name": "data",
+ "type": "39"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "652",
+ "members": [
+ {
+ "name": "data",
+ "type": "35"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "653",
+ "members": [
+ {
+ "name": "data",
+ "type": "76"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "654",
+ "members": [
+ {
+ "name": "data",
+ "type": "34"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "655",
+ "members": [
+ {
+ "name": "data",
+ "type": "38"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "656",
+ "members": [
+ {
+ "name": "individual"
+ },
+ {
+ "name": "grouped"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "individual",
+ "grouped"
+ ]
+ },
+ {
+ "name": "657",
+ "members": [
+ {
+ "name": "string"
+ },
+ {
+ "name": "number"
+ },
+ {
+ "name": "int"
+ },
+ {
+ "name": "boolean"
+ },
+ {
+ "name": "null"
+ },
+ {
+ "name": "object"
+ },
+ {
+ "name": "array"
+ },
+ {
+ "name": "value"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "string",
+ "number",
+ "int",
+ "boolean",
+ "null",
+ "object",
+ "array",
+ "value"
+ ]
+ },
+ {
+ "name": "[658]",
+ "element-type": "658",
+ "meta-type": "array"
+ },
+ {
+ "name": "658",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "features",
+ "default": null,
+ "type": "[str]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[659]",
+ "element-type": "659",
+ "meta-type": "array"
+ },
+ {
+ "name": "659",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "type",
+ "type": "str"
+ },
+ {
+ "name": "default",
+ "default": null,
+ "type": "any"
+ },
+ {
+ "name": "features",
+ "default": null,
+ "type": "[str]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[660]",
+ "element-type": "660",
+ "meta-type": "array"
+ },
+ {
+ "name": "660",
+ "members": [
+ {
+ "name": "case",
+ "type": "str"
+ },
+ {
+ "name": "type",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[661]",
+ "element-type": "661",
+ "meta-type": "array"
+ },
+ {
+ "name": "661",
+ "members": [
+ {
+ "name": "type",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "662",
+ "members": [
+ {
+ "name": "deny"
+ },
+ {
+ "name": "allow"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "deny",
+ "allow"
+ ]
+ },
+ {
+ "name": "[663]",
+ "element-type": "663",
+ "meta-type": "array"
+ },
+ {
+ "name": "663",
+ "members": [
+ {
+ "name": "match",
+ "type": "str"
+ },
+ {
+ "name": "policy",
+ "type": "662"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "761"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "664",
+ "members": [
+ {
+ "name": "all"
+ },
+ {
+ "name": "rx"
+ },
+ {
+ "name": "tx"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "all",
+ "rx",
+ "tx"
+ ]
+ },
+ {
+ "name": "665",
+ "members": [
+ {
+ "name": "before"
+ },
+ {
+ "name": "behind"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "before",
+ "behind"
+ ]
+ },
+ {
+ "name": "666",
+ "members": [
+ {
+ "name": "ctrl-ctrl"
+ },
+ {
+ "name": "alt-alt"
+ },
+ {
+ "name": "shift-shift"
+ },
+ {
+ "name": "meta-meta"
+ },
+ {
+ "name": "scrolllock"
+ },
+ {
+ "name": "ctrl-scrolllock"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "ctrl-ctrl",
+ "alt-alt",
+ "shift-shift",
+ "meta-meta",
+ "scrolllock",
+ "ctrl-scrolllock"
+ ]
+ },
+ {
+ "name": "667",
+ "members": [
+ {
+ "name": "raw"
+ },
+ {
+ "name": "base64"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "raw",
+ "base64"
+ ]
+ },
+ {
+ "name": "668",
+ "members": [
+ {
+ "name": "iops-total",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops-total-max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops-total-max-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops-read",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops-read-max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops-read-max-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops-write",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops-write-max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops-write-max-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps-total",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps-total-max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps-total-max-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps-read",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps-read-max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps-read-max-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps-write",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps-write-max",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "bps-write-max-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iops-size",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "669",
+ "members": [
+ {
+ "name": "client"
+ },
+ {
+ "name": "server"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "client",
+ "server"
+ ]
+ },
+ {
+ "name": "670",
+ "members": [
+ {
+ "name": "uninitialized"
+ },
+ {
+ "name": "stopped"
+ },
+ {
+ "name": "check-stop"
+ },
+ {
+ "name": "operating"
+ },
+ {
+ "name": "load"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "uninitialized",
+ "stopped",
+ "check-stop",
+ "operating",
+ "load"
+ ]
+ },
+ {
+ "name": "671",
+ "members": [
+ {
+ "name": "memory"
+ },
+ {
+ "name": "first-level"
+ },
+ {
+ "name": "second-level"
+ },
+ {
+ "name": "third-level"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "memory",
+ "first-level",
+ "second-level",
+ "third-level"
+ ]
+ },
+ {
+ "name": "672",
+ "members": [
+ {
+ "name": "access-latency"
+ },
+ {
+ "name": "read-latency"
+ },
+ {
+ "name": "write-latency"
+ },
+ {
+ "name": "access-bandwidth"
+ },
+ {
+ "name": "read-bandwidth"
+ },
+ {
+ "name": "write-bandwidth"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "access-latency",
+ "read-latency",
+ "write-latency",
+ "access-bandwidth",
+ "read-bandwidth",
+ "write-bandwidth"
+ ]
+ },
+ {
+ "name": "673",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "direct"
+ },
+ {
+ "name": "complex"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "direct",
+ "complex"
+ ]
+ },
+ {
+ "name": "674",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "write-back"
+ },
+ {
+ "name": "write-through"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "write-back",
+ "write-through"
+ ]
+ },
+ {
+ "name": "675",
+ "members": [
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "addr",
+ "type": "int"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "slot",
+ "type": "int"
+ },
+ {
+ "name": "node",
+ "type": "int"
+ },
+ {
+ "name": "memdev",
+ "type": "str"
+ },
+ {
+ "name": "hotplugged",
+ "type": "bool"
+ },
+ {
+ "name": "hotpluggable",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "676",
+ "members": [
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "memaddr",
+ "type": "int"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "memdev",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "677",
+ "members": [
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "memaddr",
+ "type": "int"
+ },
+ {
+ "name": "requested-size",
+ "type": "int"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "max-size",
+ "type": "int"
+ },
+ {
+ "name": "block-size",
+ "type": "int"
+ },
+ {
+ "name": "node",
+ "type": "int"
+ },
+ {
+ "name": "memdev",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "678",
+ "members": [
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "memaddr",
+ "type": "int"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "node",
+ "type": "int"
+ },
+ {
+ "name": "memdev",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "679",
+ "members": [
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "memaddr",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "max-size",
+ "type": "int"
+ },
+ {
+ "name": "memdev",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "680",
+ "members": [
+ {
+ "name": "string"
+ },
+ {
+ "name": "boolean"
+ },
+ {
+ "name": "number"
+ },
+ {
+ "name": "size"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "string",
+ "boolean",
+ "number",
+ "size"
+ ]
+ },
+ {
+ "name": "681",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "762"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "682",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "762"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "dev",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "period-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "try-poll",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "683",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "762"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "buffer-count",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "684",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "762"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "server-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "client-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "connect-ports",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "start-server",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "exact-name",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "685",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "762"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "dev",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "buffer-count",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "try-poll",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "686",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "762"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "stream-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "latency",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "687",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "762"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "stream-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "latency",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "688",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "762"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "buffer-count",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "689",
+ "members": [
+ {
+ "name": "desc",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "class",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "690",
+ "members": [
+ {
+ "name": "device",
+ "type": "int"
+ },
+ {
+ "name": "vendor",
+ "type": "int"
+ },
+ {
+ "name": "subsystem",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "subsystem-vendor",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "691",
+ "members": [
+ {
+ "name": "bus",
+ "type": "763"
+ },
+ {
+ "name": "devices",
+ "default": null,
+ "type": "[542]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[692]",
+ "element-type": "692",
+ "meta-type": "array"
+ },
+ {
+ "name": "692",
+ "members": [
+ {
+ "name": "bar",
+ "type": "int"
+ },
+ {
+ "name": "type",
+ "type": "str"
+ },
+ {
+ "name": "address",
+ "type": "int"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "prefetch",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "mem_type_64",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "693",
+ "members": [
+ {
+ "type": "int"
+ },
+ {
+ "type": "bool"
+ },
+ {
+ "type": "[int]"
+ }
+ ],
+ "meta-type": "alternate"
+ },
+ {
+ "name": "694",
+ "members": [
+ {
+ "name": "cumulative"
+ },
+ {
+ "name": "instant"
+ },
+ {
+ "name": "peak"
+ },
+ {
+ "name": "linear-histogram"
+ },
+ {
+ "name": "log2-histogram"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "cumulative",
+ "instant",
+ "peak",
+ "linear-histogram",
+ "log2-histogram"
+ ]
+ },
+ {
+ "name": "695",
+ "members": [
+ {
+ "name": "bytes"
+ },
+ {
+ "name": "seconds"
+ },
+ {
+ "name": "cycles"
+ },
+ {
+ "name": "boolean"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "bytes",
+ "seconds",
+ "cycles",
+ "boolean"
+ ]
+ },
+ {
+ "name": "696",
+ "members": [
+ {
+ "name": "protocols",
+ "type": "[str]"
+ },
+ {
+ "name": "unknown-protocols",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "697",
+ "members": [
+ {
+ "name": "builtin"
+ },
+ {
+ "name": "vhost-user"
+ },
+ {
+ "name": "lkcf"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "builtin",
+ "vhost-user",
+ "lkcf"
+ ]
+ },
+ {
+ "name": "698",
+ "members": [
+ {
+ "name": "cache-data-parity"
+ },
+ {
+ "name": "cache-address-parity"
+ },
+ {
+ "name": "cache-be-parity"
+ },
+ {
+ "name": "cache-data-ecc"
+ },
+ {
+ "name": "mem-data-parity"
+ },
+ {
+ "name": "mem-address-parity"
+ },
+ {
+ "name": "mem-be-parity"
+ },
+ {
+ "name": "mem-data-ecc"
+ },
+ {
+ "name": "reinit-threshold"
+ },
+ {
+ "name": "rsvd-encoding"
+ },
+ {
+ "name": "poison-received"
+ },
+ {
+ "name": "receiver-overflow"
+ },
+ {
+ "name": "internal"
+ },
+ {
+ "name": "cxl-ide-tx"
+ },
+ {
+ "name": "cxl-ide-rx"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "cache-data-parity",
+ "cache-address-parity",
+ "cache-be-parity",
+ "cache-data-ecc",
+ "mem-data-parity",
+ "mem-address-parity",
+ "mem-be-parity",
+ "mem-data-ecc",
+ "reinit-threshold",
+ "rsvd-encoding",
+ "poison-received",
+ "receiver-overflow",
+ "internal",
+ "cxl-ide-tx",
+ "cxl-ide-rx"
+ ]
+ },
+ {
+ "name": "699",
+ "members": [
+ {
+ "name": "unknown"
+ },
+ {
+ "name": "disabled-wait"
+ },
+ {
+ "name": "extint-loop"
+ },
+ {
+ "name": "pgmint-loop"
+ },
+ {
+ "name": "opint-loop"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "unknown",
+ "disabled-wait",
+ "extint-loop",
+ "pgmint-loop",
+ "opint-loop"
+ ]
+ },
+ {
+ "name": "700",
+ "members": [
+ {
+ "name": "qcow2"
+ },
+ {
+ "name": "vmdk"
+ },
+ {
+ "name": "luks"
+ },
+ {
+ "name": "rbd"
+ },
+ {
+ "name": "file"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "qcow2",
+ "vmdk",
+ "luks",
+ "rbd",
+ "file"
+ ]
+ },
+ {
+ "name": "701",
+ "members": [
+ {
+ "name": "data",
+ "type": "764"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "702",
+ "members": [
+ {
+ "name": "data",
+ "type": "765"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "703",
+ "members": [
+ {
+ "name": "data",
+ "type": "766"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "704",
+ "members": [
+ {
+ "name": "data",
+ "type": "767"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "705",
+ "members": [
+ {
+ "name": "data",
+ "type": "768"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "706",
+ "members": [
+ {
+ "name": "l1_update"
+ },
+ {
+ "name": "l1_grow_alloc_table"
+ },
+ {
+ "name": "l1_grow_write_table"
+ },
+ {
+ "name": "l1_grow_activate_table"
+ },
+ {
+ "name": "l2_load"
+ },
+ {
+ "name": "l2_update"
+ },
+ {
+ "name": "l2_update_compressed"
+ },
+ {
+ "name": "l2_alloc_cow_read"
+ },
+ {
+ "name": "l2_alloc_write"
+ },
+ {
+ "name": "read_aio"
+ },
+ {
+ "name": "read_backing_aio"
+ },
+ {
+ "name": "read_compressed"
+ },
+ {
+ "name": "write_aio"
+ },
+ {
+ "name": "write_compressed"
+ },
+ {
+ "name": "vmstate_load"
+ },
+ {
+ "name": "vmstate_save"
+ },
+ {
+ "name": "cow_read"
+ },
+ {
+ "name": "cow_write"
+ },
+ {
+ "name": "reftable_load"
+ },
+ {
+ "name": "reftable_grow"
+ },
+ {
+ "name": "reftable_update"
+ },
+ {
+ "name": "refblock_load"
+ },
+ {
+ "name": "refblock_update"
+ },
+ {
+ "name": "refblock_update_part"
+ },
+ {
+ "name": "refblock_alloc"
+ },
+ {
+ "name": "refblock_alloc_hookup"
+ },
+ {
+ "name": "refblock_alloc_write"
+ },
+ {
+ "name": "refblock_alloc_write_blocks"
+ },
+ {
+ "name": "refblock_alloc_write_table"
+ },
+ {
+ "name": "refblock_alloc_switch_table"
+ },
+ {
+ "name": "cluster_alloc"
+ },
+ {
+ "name": "cluster_alloc_bytes"
+ },
+ {
+ "name": "cluster_free"
+ },
+ {
+ "name": "flush_to_os"
+ },
+ {
+ "name": "flush_to_disk"
+ },
+ {
+ "name": "pwritev_rmw_head"
+ },
+ {
+ "name": "pwritev_rmw_after_head"
+ },
+ {
+ "name": "pwritev_rmw_tail"
+ },
+ {
+ "name": "pwritev_rmw_after_tail"
+ },
+ {
+ "name": "pwritev"
+ },
+ {
+ "name": "pwritev_zero"
+ },
+ {
+ "name": "pwritev_done"
+ },
+ {
+ "name": "empty_image_prepare"
+ },
+ {
+ "name": "l1_shrink_write_table"
+ },
+ {
+ "name": "l1_shrink_free_l2_clusters"
+ },
+ {
+ "name": "cor_write"
+ },
+ {
+ "name": "cluster_alloc_space"
+ },
+ {
+ "name": "none"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "l1_update",
+ "l1_grow_alloc_table",
+ "l1_grow_write_table",
+ "l1_grow_activate_table",
+ "l2_load",
+ "l2_update",
+ "l2_update_compressed",
+ "l2_alloc_cow_read",
+ "l2_alloc_write",
+ "read_aio",
+ "read_backing_aio",
+ "read_compressed",
+ "write_aio",
+ "write_compressed",
+ "vmstate_load",
+ "vmstate_save",
+ "cow_read",
+ "cow_write",
+ "reftable_load",
+ "reftable_grow",
+ "reftable_update",
+ "refblock_load",
+ "refblock_update",
+ "refblock_update_part",
+ "refblock_alloc",
+ "refblock_alloc_hookup",
+ "refblock_alloc_write",
+ "refblock_alloc_write_blocks",
+ "refblock_alloc_write_table",
+ "refblock_alloc_switch_table",
+ "cluster_alloc",
+ "cluster_alloc_bytes",
+ "cluster_free",
+ "flush_to_os",
+ "flush_to_disk",
+ "pwritev_rmw_head",
+ "pwritev_rmw_after_head",
+ "pwritev_rmw_tail",
+ "pwritev_rmw_after_tail",
+ "pwritev",
+ "pwritev_zero",
+ "pwritev_done",
+ "empty_image_prepare",
+ "l1_shrink_write_table",
+ "l1_shrink_free_l2_clusters",
+ "cor_write",
+ "cluster_alloc_space",
+ "none"
+ ]
+ },
+ {
+ "name": "707",
+ "members": [
+ {
+ "name": "read"
+ },
+ {
+ "name": "write"
+ },
+ {
+ "name": "write-zeroes"
+ },
+ {
+ "name": "discard"
+ },
+ {
+ "name": "flush"
+ },
+ {
+ "name": "block-status"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "read",
+ "write",
+ "write-zeroes",
+ "discard",
+ "flush",
+ "block-status"
+ ]
+ },
+ {
+ "name": "708",
+ "members": [
+ {
+ "name": "inet"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "inet"
+ ]
+ },
+ {
+ "name": "709",
+ "members": [
+ {
+ "name": "template",
+ "default": null,
+ "type": "710"
+ },
+ {
+ "name": "main-header",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "active-l1",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "active-l2",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "refcount-table",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "refcount-block",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "snapshot-table",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "inactive-l1",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "inactive-l2",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "bitmap-directory",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "710",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "constant"
+ },
+ {
+ "name": "cached"
+ },
+ {
+ "name": "all"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "constant",
+ "cached",
+ "all"
+ ]
+ },
+ {
+ "name": "711",
+ "members": [
+ {
+ "name": "aes"
+ },
+ {
+ "name": "luks"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "aes",
+ "luks"
+ ]
+ },
+ {
+ "name": "712",
+ "members": [
+ {
+ "name": "key-secret",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "713",
+ "members": [
+ {
+ "name": "key-secret",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "714",
+ "members": [
+ {
+ "name": "aes"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "aes"
+ ]
+ },
+ {
+ "name": "715",
+ "members": [
+ {
+ "name": "luks"
+ },
+ {
+ "name": "luks2"
+ },
+ {
+ "name": "luks-any"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "luks",
+ "luks2",
+ "luks-any"
+ ]
+ },
+ {
+ "name": "716",
+ "members": [
+ {
+ "name": "key-secret",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "717",
+ "members": [
+ {
+ "name": "key-secret",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "718",
+ "members": [
+ {
+ "name": "key-secret",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "719",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "hash"
+ },
+ {
+ "name": "known_hosts"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "hash",
+ "known_hosts"
+ ]
+ },
+ {
+ "name": "720",
+ "members": [
+ {
+ "name": "type",
+ "type": "769"
+ },
+ {
+ "name": "hash",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "721",
+ "members": [
+ {
+ "name": "off"
+ },
+ {
+ "name": "metadata"
+ },
+ {
+ "name": "falloc"
+ },
+ {
+ "name": "full"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "off",
+ "metadata",
+ "falloc",
+ "full"
+ ]
+ },
+ {
+ "name": "722",
+ "members": [
+ {
+ "name": "aes-128"
+ },
+ {
+ "name": "aes-192"
+ },
+ {
+ "name": "aes-256"
+ },
+ {
+ "name": "des"
+ },
+ {
+ "name": "3des"
+ },
+ {
+ "name": "cast5-128"
+ },
+ {
+ "name": "serpent-128"
+ },
+ {
+ "name": "serpent-192"
+ },
+ {
+ "name": "serpent-256"
+ },
+ {
+ "name": "twofish-128"
+ },
+ {
+ "name": "twofish-192"
+ },
+ {
+ "name": "twofish-256"
+ },
+ {
+ "name": "sm4"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "aes-128",
+ "aes-192",
+ "aes-256",
+ "des",
+ "3des",
+ "cast5-128",
+ "serpent-128",
+ "serpent-192",
+ "serpent-256",
+ "twofish-128",
+ "twofish-192",
+ "twofish-256",
+ "sm4"
+ ]
+ },
+ {
+ "name": "723",
+ "members": [
+ {
+ "name": "ecb"
+ },
+ {
+ "name": "cbc"
+ },
+ {
+ "name": "xts"
+ },
+ {
+ "name": "ctr"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "ecb",
+ "cbc",
+ "xts",
+ "ctr"
+ ]
+ },
+ {
+ "name": "724",
+ "members": [
+ {
+ "name": "plain"
+ },
+ {
+ "name": "plain64"
+ },
+ {
+ "name": "essiv"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "plain",
+ "plain64",
+ "essiv"
+ ]
+ },
+ {
+ "name": "725",
+ "members": [
+ {
+ "name": "md5"
+ },
+ {
+ "name": "sha1"
+ },
+ {
+ "name": "sha224"
+ },
+ {
+ "name": "sha256"
+ },
+ {
+ "name": "sha384"
+ },
+ {
+ "name": "sha512"
+ },
+ {
+ "name": "ripemd160"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "md5",
+ "sha1",
+ "sha224",
+ "sha256",
+ "sha384",
+ "sha512",
+ "ripemd160"
+ ]
+ },
+ {
+ "name": "726",
+ "tag": "format",
+ "variants": [
+ {
+ "case": "qcow",
+ "type": "712"
+ },
+ {
+ "case": "luks",
+ "type": "771"
+ }
+ ],
+ "members": [
+ {
+ "name": "format",
+ "type": "770"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "727",
+ "members": [
+ {
+ "name": "v2"
+ },
+ {
+ "name": "v3"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "v2",
+ "v3"
+ ]
+ },
+ {
+ "name": "728",
+ "members": [
+ {
+ "name": "zlib"
+ },
+ {
+ "name": "zstd"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "zlib",
+ "zstd"
+ ]
+ },
+ {
+ "name": "729",
+ "tag": "format",
+ "variants": [
+ {
+ "case": "luks",
+ "type": "772"
+ },
+ {
+ "case": "luks2",
+ "type": "773"
+ },
+ {
+ "case": "luks-any",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "format",
+ "type": "715"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "730",
+ "members": [
+ {
+ "name": "dynamic"
+ },
+ {
+ "name": "fixed"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "dynamic",
+ "fixed"
+ ]
+ },
+ {
+ "name": "731",
+ "members": [
+ {
+ "name": "monolithicSparse"
+ },
+ {
+ "name": "monolithicFlat"
+ },
+ {
+ "name": "twoGbMaxExtentSparse"
+ },
+ {
+ "name": "twoGbMaxExtentFlat"
+ },
+ {
+ "name": "streamOptimized"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "monolithicSparse",
+ "monolithicFlat",
+ "twoGbMaxExtentSparse",
+ "twoGbMaxExtentFlat",
+ "streamOptimized"
+ ]
+ },
+ {
+ "name": "732",
+ "members": [
+ {
+ "name": "ide"
+ },
+ {
+ "name": "buslogic"
+ },
+ {
+ "name": "lsilogic"
+ },
+ {
+ "name": "legacyESX"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "ide",
+ "buslogic",
+ "lsilogic",
+ "legacyESX"
+ ]
+ },
+ {
+ "name": "733",
+ "members": [
+ {
+ "name": "dynamic"
+ },
+ {
+ "name": "fixed"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "dynamic",
+ "fixed"
+ ]
+ },
+ {
+ "name": "734",
+ "members": [
+ {
+ "name": "active"
+ },
+ {
+ "name": "inactive"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "active",
+ "inactive"
+ ]
+ },
+ {
+ "name": "735",
+ "tag": "format",
+ "variants": [
+ {
+ "case": "luks",
+ "type": "774"
+ },
+ {
+ "case": "qcow",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "format",
+ "type": "770"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "736",
+ "members": [
+ {
+ "name": "logfile",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "logappend",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "in",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "out",
+ "type": "str"
+ },
+ {
+ "name": "append",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "737",
+ "members": [
+ {
+ "name": "logfile",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "logappend",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "device",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "738",
+ "members": [
+ {
+ "name": "logfile",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "logappend",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "addr",
+ "type": "359"
+ },
+ {
+ "name": "tls-creds",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "tls-authz",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "server",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "wait",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "nodelay",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "telnet",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "tn3270",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "websocket",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "reconnect",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "739",
+ "members": [
+ {
+ "name": "logfile",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "logappend",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "remote",
+ "type": "359"
+ },
+ {
+ "name": "local",
+ "default": null,
+ "type": "359"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "740",
+ "members": [
+ {
+ "name": "logfile",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "logappend",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "741",
+ "members": [
+ {
+ "name": "logfile",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "logappend",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "chardev",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "742",
+ "members": [
+ {
+ "name": "logfile",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "logappend",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "signal",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "743",
+ "members": [
+ {
+ "name": "logfile",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "logappend",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "type",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "744",
+ "members": [
+ {
+ "name": "logfile",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "logappend",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fqdn",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "745",
+ "members": [
+ {
+ "name": "logfile",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "logappend",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "mouse",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "clipboard",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "746",
+ "members": [
+ {
+ "name": "logfile",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "logappend",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "name",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "747",
+ "members": [
+ {
+ "name": "logfile",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "logappend",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "width",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "height",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "cols",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "rows",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "748",
+ "members": [
+ {
+ "name": "logfile",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "logappend",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "749",
+ "members": [
+ {
+ "name": "path",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "cancel-path",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "750",
+ "members": [
+ {
+ "name": "chardev",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "751",
+ "members": [
+ {
+ "name": "unmapped"
+ },
+ {
+ "name": "shift"
+ },
+ {
+ "name": "shift_r"
+ },
+ {
+ "name": "alt"
+ },
+ {
+ "name": "alt_r"
+ },
+ {
+ "name": "ctrl"
+ },
+ {
+ "name": "ctrl_r"
+ },
+ {
+ "name": "menu"
+ },
+ {
+ "name": "esc"
+ },
+ {
+ "name": "1"
+ },
+ {
+ "name": "2"
+ },
+ {
+ "name": "3"
+ },
+ {
+ "name": "4"
+ },
+ {
+ "name": "5"
+ },
+ {
+ "name": "6"
+ },
+ {
+ "name": "7"
+ },
+ {
+ "name": "8"
+ },
+ {
+ "name": "9"
+ },
+ {
+ "name": "0"
+ },
+ {
+ "name": "minus"
+ },
+ {
+ "name": "equal"
+ },
+ {
+ "name": "backspace"
+ },
+ {
+ "name": "tab"
+ },
+ {
+ "name": "q"
+ },
+ {
+ "name": "w"
+ },
+ {
+ "name": "e"
+ },
+ {
+ "name": "r"
+ },
+ {
+ "name": "t"
+ },
+ {
+ "name": "y"
+ },
+ {
+ "name": "u"
+ },
+ {
+ "name": "i"
+ },
+ {
+ "name": "o"
+ },
+ {
+ "name": "p"
+ },
+ {
+ "name": "bracket_left"
+ },
+ {
+ "name": "bracket_right"
+ },
+ {
+ "name": "ret"
+ },
+ {
+ "name": "a"
+ },
+ {
+ "name": "s"
+ },
+ {
+ "name": "d"
+ },
+ {
+ "name": "f"
+ },
+ {
+ "name": "g"
+ },
+ {
+ "name": "h"
+ },
+ {
+ "name": "j"
+ },
+ {
+ "name": "k"
+ },
+ {
+ "name": "l"
+ },
+ {
+ "name": "semicolon"
+ },
+ {
+ "name": "apostrophe"
+ },
+ {
+ "name": "grave_accent"
+ },
+ {
+ "name": "backslash"
+ },
+ {
+ "name": "z"
+ },
+ {
+ "name": "x"
+ },
+ {
+ "name": "c"
+ },
+ {
+ "name": "v"
+ },
+ {
+ "name": "b"
+ },
+ {
+ "name": "n"
+ },
+ {
+ "name": "m"
+ },
+ {
+ "name": "comma"
+ },
+ {
+ "name": "dot"
+ },
+ {
+ "name": "slash"
+ },
+ {
+ "name": "asterisk"
+ },
+ {
+ "name": "spc"
+ },
+ {
+ "name": "caps_lock"
+ },
+ {
+ "name": "f1"
+ },
+ {
+ "name": "f2"
+ },
+ {
+ "name": "f3"
+ },
+ {
+ "name": "f4"
+ },
+ {
+ "name": "f5"
+ },
+ {
+ "name": "f6"
+ },
+ {
+ "name": "f7"
+ },
+ {
+ "name": "f8"
+ },
+ {
+ "name": "f9"
+ },
+ {
+ "name": "f10"
+ },
+ {
+ "name": "num_lock"
+ },
+ {
+ "name": "scroll_lock"
+ },
+ {
+ "name": "kp_divide"
+ },
+ {
+ "name": "kp_multiply"
+ },
+ {
+ "name": "kp_subtract"
+ },
+ {
+ "name": "kp_add"
+ },
+ {
+ "name": "kp_enter"
+ },
+ {
+ "name": "kp_decimal"
+ },
+ {
+ "name": "sysrq"
+ },
+ {
+ "name": "kp_0"
+ },
+ {
+ "name": "kp_1"
+ },
+ {
+ "name": "kp_2"
+ },
+ {
+ "name": "kp_3"
+ },
+ {
+ "name": "kp_4"
+ },
+ {
+ "name": "kp_5"
+ },
+ {
+ "name": "kp_6"
+ },
+ {
+ "name": "kp_7"
+ },
+ {
+ "name": "kp_8"
+ },
+ {
+ "name": "kp_9"
+ },
+ {
+ "name": "less"
+ },
+ {
+ "name": "f11"
+ },
+ {
+ "name": "f12"
+ },
+ {
+ "name": "print"
+ },
+ {
+ "name": "home"
+ },
+ {
+ "name": "pgup"
+ },
+ {
+ "name": "pgdn"
+ },
+ {
+ "name": "end"
+ },
+ {
+ "name": "left"
+ },
+ {
+ "name": "up"
+ },
+ {
+ "name": "down"
+ },
+ {
+ "name": "right"
+ },
+ {
+ "name": "insert"
+ },
+ {
+ "name": "delete"
+ },
+ {
+ "name": "stop"
+ },
+ {
+ "name": "again"
+ },
+ {
+ "name": "props"
+ },
+ {
+ "name": "undo"
+ },
+ {
+ "name": "front"
+ },
+ {
+ "name": "copy"
+ },
+ {
+ "name": "open"
+ },
+ {
+ "name": "paste"
+ },
+ {
+ "name": "find"
+ },
+ {
+ "name": "cut"
+ },
+ {
+ "name": "lf"
+ },
+ {
+ "name": "help"
+ },
+ {
+ "name": "meta_l"
+ },
+ {
+ "name": "meta_r"
+ },
+ {
+ "name": "compose"
+ },
+ {
+ "name": "pause"
+ },
+ {
+ "name": "ro"
+ },
+ {
+ "name": "hiragana"
+ },
+ {
+ "name": "henkan"
+ },
+ {
+ "name": "yen"
+ },
+ {
+ "name": "muhenkan"
+ },
+ {
+ "name": "katakanahiragana"
+ },
+ {
+ "name": "kp_comma"
+ },
+ {
+ "name": "kp_equals"
+ },
+ {
+ "name": "power"
+ },
+ {
+ "name": "sleep"
+ },
+ {
+ "name": "wake"
+ },
+ {
+ "name": "audionext"
+ },
+ {
+ "name": "audioprev"
+ },
+ {
+ "name": "audiostop"
+ },
+ {
+ "name": "audioplay"
+ },
+ {
+ "name": "audiomute"
+ },
+ {
+ "name": "volumeup"
+ },
+ {
+ "name": "volumedown"
+ },
+ {
+ "name": "mediaselect"
+ },
+ {
+ "name": "mail"
+ },
+ {
+ "name": "calculator"
+ },
+ {
+ "name": "computer"
+ },
+ {
+ "name": "ac_home"
+ },
+ {
+ "name": "ac_back"
+ },
+ {
+ "name": "ac_forward"
+ },
+ {
+ "name": "ac_refresh"
+ },
+ {
+ "name": "ac_bookmarks"
+ },
+ {
+ "name": "lang1"
+ },
+ {
+ "name": "lang2"
+ },
+ {
+ "name": "f13"
+ },
+ {
+ "name": "f14"
+ },
+ {
+ "name": "f15"
+ },
+ {
+ "name": "f16"
+ },
+ {
+ "name": "f17"
+ },
+ {
+ "name": "f18"
+ },
+ {
+ "name": "f19"
+ },
+ {
+ "name": "f20"
+ },
+ {
+ "name": "f21"
+ },
+ {
+ "name": "f22"
+ },
+ {
+ "name": "f23"
+ },
+ {
+ "name": "f24"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "unmapped",
+ "shift",
+ "shift_r",
+ "alt",
+ "alt_r",
+ "ctrl",
+ "ctrl_r",
+ "menu",
+ "esc",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "0",
+ "minus",
+ "equal",
+ "backspace",
+ "tab",
+ "q",
+ "w",
+ "e",
+ "r",
+ "t",
+ "y",
+ "u",
+ "i",
+ "o",
+ "p",
+ "bracket_left",
+ "bracket_right",
+ "ret",
+ "a",
+ "s",
+ "d",
+ "f",
+ "g",
+ "h",
+ "j",
+ "k",
+ "l",
+ "semicolon",
+ "apostrophe",
+ "grave_accent",
+ "backslash",
+ "z",
+ "x",
+ "c",
+ "v",
+ "b",
+ "n",
+ "m",
+ "comma",
+ "dot",
+ "slash",
+ "asterisk",
+ "spc",
+ "caps_lock",
+ "f1",
+ "f2",
+ "f3",
+ "f4",
+ "f5",
+ "f6",
+ "f7",
+ "f8",
+ "f9",
+ "f10",
+ "num_lock",
+ "scroll_lock",
+ "kp_divide",
+ "kp_multiply",
+ "kp_subtract",
+ "kp_add",
+ "kp_enter",
+ "kp_decimal",
+ "sysrq",
+ "kp_0",
+ "kp_1",
+ "kp_2",
+ "kp_3",
+ "kp_4",
+ "kp_5",
+ "kp_6",
+ "kp_7",
+ "kp_8",
+ "kp_9",
+ "less",
+ "f11",
+ "f12",
+ "print",
+ "home",
+ "pgup",
+ "pgdn",
+ "end",
+ "left",
+ "up",
+ "down",
+ "right",
+ "insert",
+ "delete",
+ "stop",
+ "again",
+ "props",
+ "undo",
+ "front",
+ "copy",
+ "open",
+ "paste",
+ "find",
+ "cut",
+ "lf",
+ "help",
+ "meta_l",
+ "meta_r",
+ "compose",
+ "pause",
+ "ro",
+ "hiragana",
+ "henkan",
+ "yen",
+ "muhenkan",
+ "katakanahiragana",
+ "kp_comma",
+ "kp_equals",
+ "power",
+ "sleep",
+ "wake",
+ "audionext",
+ "audioprev",
+ "audiostop",
+ "audioplay",
+ "audiomute",
+ "volumeup",
+ "volumedown",
+ "mediaselect",
+ "mail",
+ "calculator",
+ "computer",
+ "ac_home",
+ "ac_back",
+ "ac_forward",
+ "ac_refresh",
+ "ac_bookmarks",
+ "lang1",
+ "lang2",
+ "f13",
+ "f14",
+ "f15",
+ "f16",
+ "f17",
+ "f18",
+ "f19",
+ "f20",
+ "f21",
+ "f22",
+ "f23",
+ "f24"
+ ]
+ },
+ {
+ "name": "752",
+ "members": [
+ {
+ "name": "key",
+ "type": "413"
+ },
+ {
+ "name": "down",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "753",
+ "members": [
+ {
+ "name": "button",
+ "type": "775"
+ },
+ {
+ "name": "down",
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "754",
+ "members": [
+ {
+ "name": "axis",
+ "type": "776"
+ },
+ {
+ "name": "value",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "755",
+ "members": [
+ {
+ "name": "type",
+ "type": "777"
+ },
+ {
+ "name": "slot",
+ "type": "int"
+ },
+ {
+ "name": "tracking-id",
+ "type": "int"
+ },
+ {
+ "name": "axis",
+ "type": "776"
+ },
+ {
+ "name": "value",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "756",
+ "members": [
+ {
+ "name": "persistent",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "757",
+ "members": [
+ {
+ "name": "socket"
+ },
+ {
+ "name": "exec"
+ },
+ {
+ "name": "rdma"
+ },
+ {
+ "name": "file"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "socket",
+ "exec",
+ "rdma",
+ "file"
+ ]
+ },
+ {
+ "name": "758",
+ "members": [
+ {
+ "name": "args",
+ "type": "[str]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "759",
+ "members": [
+ {
+ "name": "filename",
+ "type": "str"
+ },
+ {
+ "name": "offset",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "760",
+ "members": [],
+ "meta-type": "object"
+ },
+ {
+ "name": "761",
+ "members": [
+ {
+ "name": "exact"
+ },
+ {
+ "name": "glob"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "exact",
+ "glob"
+ ]
+ },
+ {
+ "name": "762",
+ "members": [
+ {
+ "name": "u8"
+ },
+ {
+ "name": "s8"
+ },
+ {
+ "name": "u16"
+ },
+ {
+ "name": "s16"
+ },
+ {
+ "name": "u32"
+ },
+ {
+ "name": "s32"
+ },
+ {
+ "name": "f32"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "u8",
+ "s8",
+ "u16",
+ "s16",
+ "u32",
+ "s32",
+ "f32"
+ ]
+ },
+ {
+ "name": "763",
+ "members": [
+ {
+ "name": "number",
+ "type": "int"
+ },
+ {
+ "name": "secondary",
+ "type": "int"
+ },
+ {
+ "name": "subordinate",
+ "type": "int"
+ },
+ {
+ "name": "io_range",
+ "type": "778"
+ },
+ {
+ "name": "memory_range",
+ "type": "778"
+ },
+ {
+ "name": "prefetchable_range",
+ "type": "778"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "764",
+ "members": [
+ {
+ "name": "compat",
+ "type": "str"
+ },
+ {
+ "name": "data-file",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "data-file-raw",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "extended-l2",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "lazy-refcounts",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "corrupt",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "refcount-bits",
+ "type": "int"
+ },
+ {
+ "name": "encrypt",
+ "default": null,
+ "type": "779"
+ },
+ {
+ "name": "bitmaps",
+ "default": null,
+ "type": "[780]"
+ },
+ {
+ "name": "compression-type",
+ "type": "728"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "765",
+ "members": [
+ {
+ "name": "create-type",
+ "type": "str"
+ },
+ {
+ "name": "cid",
+ "type": "int"
+ },
+ {
+ "name": "parent-cid",
+ "type": "int"
+ },
+ {
+ "name": "extents",
+ "type": "[781]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "766",
+ "members": [
+ {
+ "name": "cipher-alg",
+ "type": "722"
+ },
+ {
+ "name": "cipher-mode",
+ "type": "723"
+ },
+ {
+ "name": "ivgen-alg",
+ "type": "724"
+ },
+ {
+ "name": "ivgen-hash-alg",
+ "default": null,
+ "type": "725"
+ },
+ {
+ "name": "hash-alg",
+ "type": "725"
+ },
+ {
+ "name": "detached-header",
+ "type": "bool"
+ },
+ {
+ "name": "payload-offset",
+ "type": "int"
+ },
+ {
+ "name": "master-key-iters",
+ "type": "int"
+ },
+ {
+ "name": "uuid",
+ "type": "str"
+ },
+ {
+ "name": "slots",
+ "type": "[782]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "767",
+ "members": [
+ {
+ "name": "encryption-format",
+ "default": null,
+ "type": "715"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "768",
+ "members": [
+ {
+ "name": "extent-size-hint",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "769",
+ "members": [
+ {
+ "name": "md5"
+ },
+ {
+ "name": "sha1"
+ },
+ {
+ "name": "sha256"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "md5",
+ "sha1",
+ "sha256"
+ ]
+ },
+ {
+ "name": "770",
+ "members": [
+ {
+ "name": "qcow"
+ },
+ {
+ "name": "luks"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "qcow",
+ "luks"
+ ]
+ },
+ {
+ "name": "771",
+ "members": [
+ {
+ "name": "key-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "cipher-alg",
+ "default": null,
+ "type": "722"
+ },
+ {
+ "name": "cipher-mode",
+ "default": null,
+ "type": "723"
+ },
+ {
+ "name": "ivgen-alg",
+ "default": null,
+ "type": "724"
+ },
+ {
+ "name": "ivgen-hash-alg",
+ "default": null,
+ "type": "725"
+ },
+ {
+ "name": "hash-alg",
+ "default": null,
+ "type": "725"
+ },
+ {
+ "name": "iter-time",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "detached-header",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "772",
+ "members": [
+ {
+ "name": "key-secret",
+ "type": "str"
+ },
+ {
+ "name": "cipher-alg",
+ "default": null,
+ "type": "722"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "773",
+ "members": [
+ {
+ "name": "key-secret",
+ "type": "str"
+ },
+ {
+ "name": "cipher-alg",
+ "default": null,
+ "type": "722"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "774",
+ "members": [
+ {
+ "name": "state",
+ "type": "734"
+ },
+ {
+ "name": "new-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "old-secret",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "keyslot",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "iter-time",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "secret",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "775",
+ "members": [
+ {
+ "name": "left"
+ },
+ {
+ "name": "middle"
+ },
+ {
+ "name": "right"
+ },
+ {
+ "name": "wheel-up"
+ },
+ {
+ "name": "wheel-down"
+ },
+ {
+ "name": "side"
+ },
+ {
+ "name": "extra"
+ },
+ {
+ "name": "wheel-left"
+ },
+ {
+ "name": "wheel-right"
+ },
+ {
+ "name": "touch"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "left",
+ "middle",
+ "right",
+ "wheel-up",
+ "wheel-down",
+ "side",
+ "extra",
+ "wheel-left",
+ "wheel-right",
+ "touch"
+ ]
+ },
+ {
+ "name": "776",
+ "members": [
+ {
+ "name": "x"
+ },
+ {
+ "name": "y"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "x",
+ "y"
+ ]
+ },
+ {
+ "name": "777",
+ "members": [
+ {
+ "name": "begin"
+ },
+ {
+ "name": "update"
+ },
+ {
+ "name": "end"
+ },
+ {
+ "name": "cancel"
+ },
+ {
+ "name": "data"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "begin",
+ "update",
+ "end",
+ "cancel",
+ "data"
+ ]
+ },
+ {
+ "name": "778",
+ "members": [
+ {
+ "name": "base",
+ "type": "int"
+ },
+ {
+ "name": "limit",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "779",
+ "tag": "format",
+ "variants": [
+ {
+ "case": "luks",
+ "type": "766"
+ },
+ {
+ "case": "aes",
+ "type": "0"
+ }
+ ],
+ "members": [
+ {
+ "name": "format",
+ "type": "711"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[780]",
+ "element-type": "780",
+ "meta-type": "array"
+ },
+ {
+ "name": "780",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "granularity",
+ "type": "int"
+ },
+ {
+ "name": "flags",
+ "type": "[783]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[781]",
+ "element-type": "781",
+ "meta-type": "array"
+ },
+ {
+ "name": "781",
+ "members": [
+ {
+ "name": "filename",
+ "type": "str"
+ },
+ {
+ "name": "format",
+ "type": "str"
+ },
+ {
+ "name": "virtual-size",
+ "type": "int"
+ },
+ {
+ "name": "cluster-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "compressed",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[782]",
+ "element-type": "782",
+ "meta-type": "array"
+ },
+ {
+ "name": "782",
+ "members": [
+ {
+ "name": "active",
+ "type": "bool"
+ },
+ {
+ "name": "iters",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "stripes",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "key-offset",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[783]",
+ "element-type": "783",
+ "meta-type": "array"
+ },
+ {
+ "name": "783",
+ "members": [
+ {
+ "name": "in-use"
+ },
+ {
+ "name": "auto"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "in-use",
+ "auto"
+ ]
+ }
+ ],
+ "id": "libvirt-4"
+}
+
+{
+ "execute": "query-kvm",
+ "id": "libvirt-5"
+}
+
+{
+ "return": {
+ "enabled": true,
+ "present": true
+ },
+ "id": "libvirt-5"
+}
+
+{
+ "execute": "qom-list-types",
+ "id": "libvirt-6"
+}
+
+{
+ "return": [
+ {
+ "name": "EPYC-Genoa-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-user-vsock-device",
+ "parent": "vhost-vsock-common"
+ },
+ {
+ "name": "pcie-pci-bridge",
+ "parent": "base-pci-bridge"
+ },
+ {
+ "name": "pc-q35-2.11-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "acpi-erst",
+ "parent": "pci-device"
+ },
+ {
+ "name": "max-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-i440fx-7.2-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "isa-applesmc",
+ "parent": "isa-device"
+ },
+ {
+ "name": "Westmere-IBRS-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "usb-redir",
+ "parent": "usb-device"
+ },
+ {
+ "name": "virtio-rng-device",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "floppy-bus",
+ "parent": "bus"
+ },
+ {
+ "name": "Denverton-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "chardev-testdev",
+ "parent": "chardev"
+ },
+ {
+ "name": "usb-wacom-tablet",
+ "parent": "usb-device"
+ },
+ {
+ "name": "Haswell-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "sev-guest",
+ "parent": "x86-confidential-guest"
+ },
+ {
+ "name": "pci-ipmi-bt",
+ "parent": "pci-device"
+ },
+ {
+ "name": "filter-buffer",
+ "parent": "netfilter"
+ },
+ {
+ "name": "ufs-lu",
+ "parent": "device"
+ },
+ {
+ "name": "ich9-usb-uhci6",
+ "parent": "pci-uhci-usb"
+ },
+ {
+ "name": "secondary-vga",
+ "parent": "pci-vga"
+ },
+ {
+ "name": "kvm-pit",
+ "parent": "pit-common"
+ },
+ {
+ "name": "tpm-crb",
+ "parent": "device"
+ },
+ {
+ "name": "rtl8139",
+ "parent": "pci-device"
+ },
+ {
+ "name": "core2duo-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pci-bridge",
+ "parent": "base-pci-bridge"
+ },
+ {
+ "name": "pc-q35-2.5-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "pc-i440fx-3.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "cxl-rp",
+ "parent": "pcie-root-port-base"
+ },
+ {
+ "name": "virtio-crypto-device",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "ich9-usb-uhci5",
+ "parent": "pci-uhci-usb"
+ },
+ {
+ "name": "pcm3680_pci",
+ "parent": "pci-device"
+ },
+ {
+ "name": "vhost-user-input-pci",
+ "parent": "vhost-user-input-pci-base-type"
+ },
+ {
+ "name": "vmware-svga",
+ "parent": "pci-device"
+ },
+ {
+ "name": "virtio-mmio-bus",
+ "parent": "virtio-bus"
+ },
+ {
+ "name": "i8042-mmio",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "kvm-ioapic",
+ "parent": "ioapic-common"
+ },
+ {
+ "name": "gus",
+ "parent": "isa-device"
+ },
+ {
+ "name": "serial",
+ "parent": "device"
+ },
+ {
+ "name": "ich9-usb-uhci4",
+ "parent": "pci-uhci-usb"
+ },
+ {
+ "name": "pxb-cxl-host",
+ "parent": "pci-host-bridge"
+ },
+ {
+ "name": "usb-hub",
+ "parent": "usb-device"
+ },
+ {
+ "name": "virtio-9p-pci-transitional",
+ "parent": "virtio-9p-pci-base"
+ },
+ {
+ "name": "ICH9-LPC",
+ "parent": "pci-device"
+ },
+ {
+ "name": "virtio-blk-device",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "ich9-usb-uhci3",
+ "parent": "pci-uhci-usb"
+ },
+ {
+ "name": "Opteron_G5-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "virtio-gpu-gl-device",
+ "parent": "virtio-gpu-device"
+ },
+ {
+ "name": "Westmere-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "qtest-accel",
+ "parent": "accel"
+ },
+ {
+ "name": "chardev-wctablet",
+ "parent": "chardev"
+ },
+ {
+ "name": "xen-primary-console",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "pc-q35-6.2-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "ich9-usb-uhci2",
+ "parent": "pci-uhci-usb"
+ },
+ {
+ "name": "pc-i440fx-2.8-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "chardev-serial",
+ "parent": "chardev-fd"
+ },
+ {
+ "name": "resettable-container",
+ "parent": "object"
+ },
+ {
+ "name": "e1000e",
+ "parent": "pci-device"
+ },
+ {
+ "name": "vhost-user-vsock-pci",
+ "parent": "vhost-user-vsock-pci-base"
+ },
+ {
+ "name": "Cooperlake-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "ich9-usb-uhci1",
+ "parent": "pci-uhci-usb"
+ },
+ {
+ "name": "qemu-text-console",
+ "parent": "qemu-console"
+ },
+ {
+ "name": "pc-i440fx-5.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "scsi-generic",
+ "parent": "scsi-device"
+ },
+ {
+ "name": "ICH9-SMB",
+ "parent": "pci-device"
+ },
+ {
+ "name": "kvmclock",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "pc-i440fx-8.2-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "vhost-user-snd-pci",
+ "parent": "vhost-user-snd-pci-base"
+ },
+ {
+ "name": "x3130-upstream",
+ "parent": "pcie-port"
+ },
+ {
+ "name": "virtio-serial-pci-transitional",
+ "parent": "virtio-serial-pci-base"
+ },
+ {
+ "name": "memory-backend-ram",
+ "parent": "memory-backend"
+ },
+ {
+ "name": "PCIE",
+ "parent": "PCI"
+ },
+ {
+ "name": "virtio-gpu-pci",
+ "parent": "virtio-gpu-pci-base-type"
+ },
+ {
+ "name": "n270-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pxb-host",
+ "parent": "pci-host-bridge"
+ },
+ {
+ "name": "virtio-serial-bus",
+ "parent": "bus"
+ },
+ {
+ "name": "chardev-file",
+ "parent": "chardev-fd"
+ },
+ {
+ "name": "Icelake-Server-v3-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "tpm-passthrough",
+ "parent": "tpm-backend"
+ },
+ {
+ "name": "usb-host",
+ "parent": "usb-device"
+ },
+ {
+ "name": "pentium3-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "ufs-bus",
+ "parent": "bus"
+ },
+ {
+ "name": "ps2-mouse",
+ "parent": "ps2-device"
+ },
+ {
+ "name": "xen-xenstore",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "tulip",
+ "parent": "pci-device"
+ },
+ {
+ "name": "piix3-ide",
+ "parent": "pci-ide"
+ },
+ {
+ "name": "filter-rewriter",
+ "parent": "netfilter"
+ },
+ {
+ "name": "pc-i440fx-4.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "vhost-scsi-pci",
+ "parent": "vhost-scsi-pci-base"
+ },
+ {
+ "name": "acpi-ged",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "isa-ipmi-bt",
+ "parent": "isa-device"
+ },
+ {
+ "name": "pc-q35-8.2-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "vhost-user-vsock-pci-non-transitional",
+ "parent": "vhost-user-vsock-pci-base"
+ },
+ {
+ "name": "Snowridge-v3-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pci-ipmi-kcs",
+ "parent": "pci-device"
+ },
+ {
+ "name": "intel-iommu-iommu-memory-region",
+ "parent": "iommu-memory-region"
+ },
+ {
+ "name": "xio3130-downstream",
+ "parent": "pcie-slot"
+ },
+ {
+ "name": "ufs",
+ "parent": "pci-device"
+ },
+ {
+ "name": "pc-i440fx-2.3-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "PCI",
+ "parent": "bus"
+ },
+ {
+ "name": "microvm-machine",
+ "parent": "x86-machine"
+ },
+ {
+ "name": "sdhci-bus",
+ "parent": "sd-bus"
+ },
+ {
+ "name": "imx-usdhc",
+ "parent": "generic-sdhci"
+ },
+ {
+ "name": "pci-serial-2x",
+ "parent": "pci-device"
+ },
+ {
+ "name": "pc-i440fx-6.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "virtio-9p-device",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "vhost-user-i2c-device",
+ "parent": "vhost-user-base"
+ },
+ {
+ "name": "virtio-scsi-pci",
+ "parent": "virtio-scsi-pci-base"
+ },
+ {
+ "name": "ipmi-bmc-extern",
+ "parent": "ipmi-bmc"
+ },
+ {
+ "name": "EPYC-Rome-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-q35-4.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "authz-list-file",
+ "parent": "authz"
+ },
+ {
+ "name": "usb-audio",
+ "parent": "usb-device"
+ },
+ {
+ "name": "SierraForest-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-q35-7.2-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "qemu32-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Skylake-Client-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-vsock-pci-non-transitional",
+ "parent": "vhost-vsock-pci-base"
+ },
+ {
+ "name": "ich9-usb-ehci2",
+ "parent": "pci-ehci-usb"
+ },
+ {
+ "name": "usb-net",
+ "parent": "usb-device"
+ },
+ {
+ "name": "CXL",
+ "parent": "PCIE"
+ },
+ {
+ "name": "xen-gnttab",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "isa-debug-exit",
+ "parent": "isa-device"
+ },
+ {
+ "name": "vfio-pci-nohotplug",
+ "parent": "vfio-pci"
+ },
+ {
+ "name": "KnightsMill-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "chardev-udp",
+ "parent": "chardev"
+ },
+ {
+ "name": "i2c-bus",
+ "parent": "bus"
+ },
+ {
+ "name": "memory-region",
+ "parent": "object"
+ },
+ {
+ "name": "Skylake-Server-v3-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "ctucan_pci",
+ "parent": "pci-device"
+ },
+ {
+ "name": "ich9-usb-ehci1",
+ "parent": "pci-ehci-usb"
+ },
+ {
+ "name": "pc-q35-3.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "virtio-input-host-pci",
+ "parent": "virtio-input-host-pci-base-type"
+ },
+ {
+ "name": "nvdimm",
+ "parent": "pc-dimm"
+ },
+ {
+ "name": "mch",
+ "parent": "pci-device"
+ },
+ {
+ "name": "Icelake-Server-v5-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Opteron_G1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "virtio-mem",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "vhost-user-device-pci",
+ "parent": "vhost-user-device-pci-base"
+ },
+ {
+ "name": "serial-mm",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "pr-manager-helper",
+ "parent": "pr-manager"
+ },
+ {
+ "name": "pc-i440fx-2.10-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "thread-context",
+ "parent": "object"
+ },
+ {
+ "name": "i82557c",
+ "parent": "pci-device"
+ },
+ {
+ "name": "i82557b",
+ "parent": "pci-device"
+ },
+ {
+ "name": "EPYC-Milan-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "virtio-scsi-device",
+ "parent": "virtio-scsi-common"
+ },
+ {
+ "name": "pxb-pcie",
+ "parent": "pxb"
+ },
+ {
+ "name": "Haswell-IBRS-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-user-i2c-pci",
+ "parent": "vhost-user-i2c-pci-base"
+ },
+ {
+ "name": "input-barrier",
+ "parent": "object"
+ },
+ {
+ "name": "xen-backend",
+ "parent": "device"
+ },
+ {
+ "name": "sysbus-xhci",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "chardev-memory",
+ "parent": "chardev-ringbuf"
+ },
+ {
+ "name": "Haswell-v3-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-user-scsi-pci-non-transitional",
+ "parent": "vhost-user-scsi-pci-base"
+ },
+ {
+ "name": "i82557a",
+ "parent": "pci-device"
+ },
+ {
+ "name": "pc-q35-2.8-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "generic-sdhci",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "virtio-scsi-pci-non-transitional",
+ "parent": "virtio-scsi-pci-base"
+ },
+ {
+ "name": "vmmouse",
+ "parent": "isa-device"
+ },
+ {
+ "name": "migration",
+ "parent": "device"
+ },
+ {
+ "name": "athlon-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "ps2-kbd",
+ "parent": "ps2-device"
+ },
+ {
+ "name": "EPYC-Rome-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "virtio-mouse-pci",
+ "parent": "virtio-mouse-pci-base-type"
+ },
+ {
+ "name": "cxl-switch-mailbox-cci",
+ "parent": "pci-device"
+ },
+ {
+ "name": "pc-q35-5.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "Skylake-Server-v5-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-user-vga",
+ "parent": "vhost-user-vga-base-type"
+ },
+ {
+ "name": "SapphireRapids-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Skylake-Client-v4-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-vsock-device",
+ "parent": "vhost-vsock-common"
+ },
+ {
+ "name": "Opteron_G2-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "chardev-dbus",
+ "parent": "chardev-socket"
+ },
+ {
+ "name": "Broadwell-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-i440fx-7.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "sd-card-spi",
+ "parent": "sd-card"
+ },
+ {
+ "name": "usb-braille",
+ "parent": "usb-serial-dev"
+ },
+ {
+ "name": "EPYC-IBPB-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Nehalem-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "ib700",
+ "parent": "isa-device"
+ },
+ {
+ "name": "amd-iommu",
+ "parent": "x86-iommu"
+ },
+ {
+ "name": "virtio-9p-pci-non-transitional",
+ "parent": "virtio-9p-pci-base"
+ },
+ {
+ "name": "isa-pcspk",
+ "parent": "isa-device"
+ },
+ {
+ "name": "memory-backend-file",
+ "parent": "memory-backend"
+ },
+ {
+ "name": "xen-disk",
+ "parent": "xen-block"
+ },
+ {
+ "name": "xen-console",
+ "parent": "xen-device"
+ },
+ {
+ "name": "ide-cf",
+ "parent": "ide-device"
+ },
+ {
+ "name": "sd-card",
+ "parent": "device"
+ },
+ {
+ "name": "pc-q35-4.0.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "sysbus-ahci",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "vhost-scsi",
+ "parent": "vhost-scsi-common"
+ },
+ {
+ "name": "usb-tablet",
+ "parent": "usb-hid"
+ },
+ {
+ "name": "IvyBridge-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "qio-channel-null",
+ "parent": "qio-channel"
+ },
+ {
+ "name": "Icelake-Server-noTSX-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "virtio-blk-pci-non-transitional",
+ "parent": "virtio-blk-pci-base"
+ },
+ {
+ "name": "esp",
+ "parent": "device"
+ },
+ {
+ "name": "isabus-bridge",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "ne2k_pci",
+ "parent": "pci-device"
+ },
+ {
+ "name": "usb-bus",
+ "parent": "bus"
+ },
+ {
+ "name": "ide-cd",
+ "parent": "ide-device"
+ },
+ {
+ "name": "qtest",
+ "parent": "object"
+ },
+ {
+ "name": "EPYC-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "tcg-accel",
+ "parent": "accel"
+ },
+ {
+ "name": "virtio-gpu-device",
+ "parent": "virtio-gpu-base"
+ },
+ {
+ "name": "virtio-balloon-pci",
+ "parent": "virtio-balloon-pci-base"
+ },
+ {
+ "name": "athlon-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Cascadelake-Server-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "e1000",
+ "parent": "e1000-base"
+ },
+ {
+ "name": "piix4-ide",
+ "parent": "pci-ide"
+ },
+ {
+ "name": "pc-i440fx-9.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "vhost-user-gpu-pci",
+ "parent": "vhost-user-gpu-pci-base-type"
+ },
+ {
+ "name": "nvme",
+ "parent": "pci-device"
+ },
+ {
+ "name": "Conroe-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "i82551",
+ "parent": "pci-device"
+ },
+ {
+ "name": "SandyBridge-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "isa-ipmi-kcs",
+ "parent": "isa-device"
+ },
+ {
+ "name": "i82550",
+ "parent": "pci-device"
+ },
+ {
+ "name": "EPYC-Rome-v3-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "cxl-type3",
+ "parent": "pci-device"
+ },
+ {
+ "name": "i2c-echo",
+ "parent": "i2c-slave"
+ },
+ {
+ "name": "pc-i440fx-2.6-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "pc-q35-6.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "vhost-user-backend",
+ "parent": "object"
+ },
+ {
+ "name": "mioe3680_pci",
+ "parent": "pci-device"
+ },
+ {
+ "name": "vmxnet3",
+ "parent": "pci-device"
+ },
+ {
+ "name": "ES1370",
+ "parent": "pci-device"
+ },
+ {
+ "name": "nec-usb-xhci",
+ "parent": "pci-xhci"
+ },
+ {
+ "name": "isa-pit",
+ "parent": "pit-common"
+ },
+ {
+ "name": "kvm-apic",
+ "parent": "apic-common"
+ },
+ {
+ "name": "virtio-sound-pci",
+ "parent": "virtio-sound-pci-base-type"
+ },
+ {
+ "name": "kvm64-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Broadwell-v4-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "memory-backend-memfd",
+ "parent": "memory-backend"
+ },
+ {
+ "name": "pc-i440fx-8.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "smbus-eeprom",
+ "parent": "smbus-device"
+ },
+ {
+ "name": "dbus-display",
+ "parent": "object"
+ },
+ {
+ "name": "virtio-serial-device",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "iothread",
+ "parent": "event-loop-base"
+ },
+ {
+ "name": "virtio-serial-pci",
+ "parent": "virtio-serial-pci-base"
+ },
+ {
+ "name": "vhost-user-scmi-pci",
+ "parent": "vhost-user-scmi-pci-base"
+ },
+ {
+ "name": "xen-bridge",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "Denverton-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "SierraForest-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "virtio-crypto-pci",
+ "parent": "virtio-crypto-pci-base-type"
+ },
+ {
+ "name": "i8042",
+ "parent": "isa-device"
+ },
+ {
+ "name": "imx.usbphy",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "System",
+ "parent": "bus"
+ },
+ {
+ "name": "xen-net-device",
+ "parent": "xen-device"
+ },
+ {
+ "name": "ati-vga",
+ "parent": "pci-device"
+ },
+ {
+ "name": "pentium3-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "kvm-i8259",
+ "parent": "pic-common"
+ },
+ {
+ "name": "isa-serial",
+ "parent": "isa-device"
+ },
+ {
+ "name": "pc-q35-8.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "x-remote-object",
+ "parent": "object"
+ },
+ {
+ "name": "core2duo-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-user-blk-pci-non-transitional",
+ "parent": "vhost-user-blk-pci-base"
+ },
+ {
+ "name": "virtio-rng-pci-non-transitional",
+ "parent": "virtio-rng-pci-base"
+ },
+ {
+ "name": "cirrus-vga",
+ "parent": "pci-device"
+ },
+ {
+ "name": "main-loop",
+ "parent": "event-loop-base"
+ },
+ {
+ "name": "kvm32-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Cascadelake-Server-v4-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-i440fx-2.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "i82559er",
+ "parent": "pci-device"
+ },
+ {
+ "name": "remote-pcihost",
+ "parent": "pcie-host-bridge"
+ },
+ {
+ "name": "Icelake-Server-v7-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Skylake-Client-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Opteron_G3-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "xen-cdrom",
+ "parent": "xen-block"
+ },
+ {
+ "name": "Cooperlake-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "container",
+ "parent": "object"
+ },
+ {
+ "name": "486-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "EPYC-v3-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "scsi-cd",
+ "parent": "scsi-disk-base"
+ },
+ {
+ "name": "pc-q35-7.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "gpex-root",
+ "parent": "pci-device"
+ },
+ {
+ "name": "vmport",
+ "parent": "isa-device"
+ },
+ {
+ "name": "sgx-epc",
+ "parent": "device"
+ },
+ {
+ "name": "isa-ide",
+ "parent": "isa-device"
+ },
+ {
+ "name": "am53c974",
+ "parent": "pci-device"
+ },
+ {
+ "name": "virtio-serial-pci-non-transitional",
+ "parent": "virtio-serial-pci-base"
+ },
+ {
+ "name": "qemu64-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "e1000-82545em",
+ "parent": "e1000-base"
+ },
+ {
+ "name": "pxb-pcie-bus",
+ "parent": "PCIE"
+ },
+ {
+ "name": "vhost-user-scsi",
+ "parent": "vhost-scsi-common"
+ },
+ {
+ "name": "sdhci-pci",
+ "parent": "pci-device"
+ },
+ {
+ "name": "igbvf",
+ "parent": "pci-device"
+ },
+ {
+ "name": "PIIX4_PM",
+ "parent": "pci-device"
+ },
+ {
+ "name": "virtio-rng-pci-transitional",
+ "parent": "virtio-rng-pci-base"
+ },
+ {
+ "name": "EPYC-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-vdpa-device",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "usb-bot",
+ "parent": "usb-storage-dev"
+ },
+ {
+ "name": "virtio-gpu-gl-pci",
+ "parent": "virtio-gpu-gl-pci-base-type"
+ },
+ {
+ "name": "pc-q35-2.12-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "VGA",
+ "parent": "pci-vga"
+ },
+ {
+ "name": "qio-channel-buffer",
+ "parent": "qio-channel"
+ },
+ {
+ "name": "i440FX",
+ "parent": "pci-device"
+ },
+ {
+ "name": "hv-balloon",
+ "parent": "vmbus-dev"
+ },
+ {
+ "name": "xen-bus",
+ "parent": "bus"
+ },
+ {
+ "name": "Penryn-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-q35-9.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "Conroe-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "cryptodev-backend-lkcf",
+ "parent": "cryptodev-backend"
+ },
+ {
+ "name": "apic",
+ "parent": "apic-common"
+ },
+ {
+ "name": "vhost-user-fs-device",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "Icelake-Server-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pci-serial-4x",
+ "parent": "pci-device"
+ },
+ {
+ "name": "pc-i440fx-3.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "xen-evtchn",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "Opteron_G5-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-q35-2.6-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "hpet",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "pci-ohci",
+ "parent": "pci-device"
+ },
+ {
+ "name": "Haswell-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "virtio-tablet-device",
+ "parent": "virtio-input-hid-device"
+ },
+ {
+ "name": "EPYC-Genoa-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "ccid-card-passthru",
+ "parent": "ccid-card"
+ },
+ {
+ "name": "chardev-parallel",
+ "parent": "chardev"
+ },
+ {
+ "name": "chardev-vc",
+ "parent": "chardev"
+ },
+ {
+ "name": "cryptodev-backend",
+ "parent": "object"
+ },
+ {
+ "name": "isapc-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "cryptodev-vhost-user",
+ "parent": "cryptodev-backend"
+ },
+ {
+ "name": "tpm-emulator",
+ "parent": "tpm-backend"
+ },
+ {
+ "name": "i8257",
+ "parent": "isa-device"
+ },
+ {
+ "name": "usb-uas",
+ "parent": "usb-device"
+ },
+ {
+ "name": "IvyBridge-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "SandyBridge-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-i440fx-2.9-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "ivshmem-plain",
+ "parent": "ivshmem-common"
+ },
+ {
+ "name": "virtio-keyboard-pci",
+ "parent": "virtio-keyboard-pci-base-type"
+ },
+ {
+ "name": "pcnet",
+ "parent": "pci-device"
+ },
+ {
+ "name": "Dhyana-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-i440fx-5.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "qemu-graphic-console",
+ "parent": "qemu-console"
+ },
+ {
+ "name": "i82559c",
+ "parent": "pci-device"
+ },
+ {
+ "name": "AMDVI-PCI",
+ "parent": "pci-device"
+ },
+ {
+ "name": "chardev-spiceport",
+ "parent": "chardev-spice"
+ },
+ {
+ "name": "virtserialport",
+ "parent": "virtio-serial-port"
+ },
+ {
+ "name": "ipoctal232",
+ "parent": "ipack-device"
+ },
+ {
+ "name": "i82559b",
+ "parent": "pci-device"
+ },
+ {
+ "name": "Nehalem-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "usb-mouse",
+ "parent": "usb-hid"
+ },
+ {
+ "name": "filter-redirector",
+ "parent": "netfilter"
+ },
+ {
+ "name": "ccid-bus",
+ "parent": "bus"
+ },
+ {
+ "name": "ide-hd",
+ "parent": "ide-device"
+ },
+ {
+ "name": "tls-creds-x509",
+ "parent": "tls-creds"
+ },
+ {
+ "name": "Snowridge-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Broadwell-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-user-scsi-pci",
+ "parent": "vhost-user-scsi-pci-base"
+ },
+ {
+ "name": "i82559a",
+ "parent": "pci-device"
+ },
+ {
+ "name": "kvaser_pci",
+ "parent": "pci-device"
+ },
+ {
+ "name": "dbus-vmstate",
+ "parent": "object"
+ },
+ {
+ "name": "acpi-generic-initiator",
+ "parent": "object"
+ },
+ {
+ "name": "pc-i440fx-4.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "virtio-blk-pci",
+ "parent": "virtio-blk-pci-base"
+ },
+ {
+ "name": "e1000-82544gc",
+ "parent": "e1000-base"
+ },
+ {
+ "name": "qio-channel-command",
+ "parent": "qio-channel"
+ },
+ {
+ "name": "Opteron_G3-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "usb-ccid",
+ "parent": "usb-device"
+ },
+ {
+ "name": "x-remote-iommu",
+ "parent": "object"
+ },
+ {
+ "name": "qemu-fixed-text-console",
+ "parent": "qemu-text-console"
+ },
+ {
+ "name": "port92",
+ "parent": "isa-device"
+ },
+ {
+ "name": "pc-i440fx-2.4-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "vhost-user-scmi",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "isa-cirrus-vga",
+ "parent": "isa-device"
+ },
+ {
+ "name": "qemu64-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Skylake-Server-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "chardev-braille",
+ "parent": "chardev"
+ },
+ {
+ "name": "vfio-pci",
+ "parent": "pci-device"
+ },
+ {
+ "name": "pc-q35-4.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "mc146818rtc",
+ "parent": "isa-device"
+ },
+ {
+ "name": "virtio-multitouch-device",
+ "parent": "virtio-input-hid-device"
+ },
+ {
+ "name": "bochs-display",
+ "parent": "pci-device"
+ },
+ {
+ "name": "Broadwell-IBRS-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "qio-net-listener",
+ "parent": "object"
+ },
+ {
+ "name": "edu",
+ "parent": "pci-device"
+ },
+ {
+ "name": "pc-testdev",
+ "parent": "isa-device"
+ },
+ {
+ "name": "megasas",
+ "parent": "megasas-base"
+ },
+ {
+ "name": "qio-channel-websock",
+ "parent": "qio-channel"
+ },
+ {
+ "name": "virtio-iommu-pci",
+ "parent": "virtio-iommu-pci-base-type"
+ },
+ {
+ "name": "pc-i440fx-6.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "vhost-vdpa-device-pci-non-transitional",
+ "parent": "vhost-vdpa-device-pci-base"
+ },
+ {
+ "name": "vmcoreinfo",
+ "parent": "device"
+ },
+ {
+ "name": "tpci200",
+ "parent": "pci-device"
+ },
+ {
+ "name": "rocker",
+ "parent": "pci-device"
+ },
+ {
+ "name": "qio-channel-file",
+ "parent": "qio-channel"
+ },
+ {
+ "name": "gpio_i2c",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "qio-channel-socket",
+ "parent": "qio-channel"
+ },
+ {
+ "name": "coreduo-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-q35-3.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "Icelake-Server-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "chardev-socket",
+ "parent": "chardev"
+ },
+ {
+ "name": "clock",
+ "parent": "object"
+ },
+ {
+ "name": "ioh3420",
+ "parent": "pcie-root-port-base"
+ },
+ {
+ "name": "Haswell-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "host-x86_64-cpu",
+ "parent": "max-x86_64-cpu"
+ },
+ {
+ "name": "secret",
+ "parent": "secret_common"
+ },
+ {
+ "name": "usb-ehci",
+ "parent": "pci-ehci-usb"
+ },
+ {
+ "name": "pc-i440fx-2.11-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "pxb",
+ "parent": "pci-device"
+ },
+ {
+ "name": "AC97",
+ "parent": "pci-device"
+ },
+ {
+ "name": "vmgenid",
+ "parent": "device"
+ },
+ {
+ "name": "virtio-multitouch-pci",
+ "parent": "virtio-multitouch-pci-base-type"
+ },
+ {
+ "name": "virtio-pmem",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "nvme-bus",
+ "parent": "bus"
+ },
+ {
+ "name": "xen-sysbus",
+ "parent": "bus"
+ },
+ {
+ "name": "virtio-net-pci-non-transitional",
+ "parent": "virtio-net-pci-base"
+ },
+ {
+ "name": "cs4231a",
+ "parent": "isa-device"
+ },
+ {
+ "name": "hyperv-testdev",
+ "parent": "isa-device"
+ },
+ {
+ "name": "scsi-hd",
+ "parent": "scsi-disk-base"
+ },
+ {
+ "name": "Cascadelake-Server-noTSX-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "usb-kbd",
+ "parent": "usb-hid"
+ },
+ {
+ "name": "isa-fdc",
+ "parent": "isa-device"
+ },
+ {
+ "name": "base-xhci",
+ "parent": "device"
+ },
+ {
+ "name": "virtio-net-device",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "filter-replay",
+ "parent": "netfilter"
+ },
+ {
+ "name": "usb-mtp",
+ "parent": "usb-device"
+ },
+ {
+ "name": "input-linux",
+ "parent": "object"
+ },
+ {
+ "name": "ccid-card-emulated",
+ "parent": "ccid-card"
+ },
+ {
+ "name": "pc-q35-2.9-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "Skylake-Client-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Skylake-Server-IBRS-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "lsi53c810",
+ "parent": "lsi53c895a"
+ },
+ {
+ "name": "vhost-user-rng",
+ "parent": "vhost-user-base"
+ },
+ {
+ "name": "s3c-sdhci",
+ "parent": "generic-sdhci"
+ },
+ {
+ "name": "filter-mirror",
+ "parent": "netfilter"
+ },
+ {
+ "name": "fw_cfg_mem",
+ "parent": "fw_cfg"
+ },
+ {
+ "name": "Westmere-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "tpm-tis",
+ "parent": "isa-device"
+ },
+ {
+ "name": "pc-q35-5.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "x-pci-proxy-dev",
+ "parent": "pci-device"
+ },
+ {
+ "name": "virtio-mouse-device",
+ "parent": "virtio-input-hid-device"
+ },
+ {
+ "name": "virtconsole",
+ "parent": "virtserialport"
+ },
+ {
+ "name": "guest-loader",
+ "parent": "device"
+ },
+ {
+ "name": "x-remote-machine",
+ "parent": "machine"
+ },
+ {
+ "name": "throttle-group",
+ "parent": "object"
+ },
+ {
+ "name": "virtio-rng-pci",
+ "parent": "virtio-rng-pci-base"
+ },
+ {
+ "name": "piix4-usb-uhci",
+ "parent": "pci-uhci-usb"
+ },
+ {
+ "name": "pc-q35-2.10-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "vhost-vdpa-device-pci-transitional",
+ "parent": "vhost-vdpa-device-pci-base"
+ },
+ {
+ "name": "pc-i440fx-7.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "chardev-gdb",
+ "parent": "chardev"
+ },
+ {
+ "name": "vhost-user-gpio-device",
+ "parent": "vhost-user-base"
+ },
+ {
+ "name": "virtio-scsi-pci-transitional",
+ "parent": "virtio-scsi-pci-base"
+ },
+ {
+ "name": "gpex-pcihost",
+ "parent": "pcie-host-bridge"
+ },
+ {
+ "name": "iommufd",
+ "parent": "object"
+ },
+ {
+ "name": "Skylake-Client-IBRS-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-user-device",
+ "parent": "vhost-user-base"
+ },
+ {
+ "name": "Cascadelake-Server-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Icelake-Server-v4-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pci-testdev",
+ "parent": "pci-device"
+ },
+ {
+ "name": "vhost-user-input",
+ "parent": "vhost-user-base"
+ },
+ {
+ "name": "xen-overlay",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "ich9-intel-hda",
+ "parent": "intel-hda-generic"
+ },
+ {
+ "name": "secret_keyring",
+ "parent": "secret_common"
+ },
+ {
+ "name": "PIIX3",
+ "parent": "pci-piix"
+ },
+ {
+ "name": "pc-q35-2.4-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "tls-creds-psk",
+ "parent": "tls-creds"
+ },
+ {
+ "name": "virtio-9p-pci",
+ "parent": "virtio-9p-pci-base"
+ },
+ {
+ "name": "ISA",
+ "parent": "bus"
+ },
+ {
+ "name": "phenom-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "virtio-net-pci-transitional",
+ "parent": "virtio-net-pci-base"
+ },
+ {
+ "name": "vhost-vsock-pci",
+ "parent": "vhost-vsock-pci-base"
+ },
+ {
+ "name": "virtio-sound-device",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "pc-dimm",
+ "parent": "device"
+ },
+ {
+ "name": "pxb-cxl-bus",
+ "parent": "CXL"
+ },
+ {
+ "name": "pc-i440fx-9.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "irq",
+ "parent": "object"
+ },
+ {
+ "name": "virtio-balloon-pci-non-transitional",
+ "parent": "virtio-balloon-pci-base"
+ },
+ {
+ "name": "ipmi-bmc-sim",
+ "parent": "ipmi-bmc"
+ },
+ {
+ "name": "Snowridge-v4-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vmbus-bridge",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "IvyBridge-IBRS-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-user-blk-pci-transitional",
+ "parent": "vhost-user-blk-pci-base"
+ },
+ {
+ "name": "coreduo-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Skylake-Client-noTSX-IBRS-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-scsi-pci-transitional",
+ "parent": "vhost-scsi-pci-base"
+ },
+ {
+ "name": "usb-storage",
+ "parent": "usb-storage-dev"
+ },
+ {
+ "name": "chardev-msmouse",
+ "parent": "chardev"
+ },
+ {
+ "name": "pc-q35-6.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "pc-i440fx-2.7-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "SapphireRapids-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "isa-i8259",
+ "parent": "pic-common"
+ },
+ {
+ "name": "Skylake-Client-v3-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "colo-compare",
+ "parent": "object"
+ },
+ {
+ "name": "pentium2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "KnightsMill-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "virtio-mmio",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "pxb-bus",
+ "parent": "PCI"
+ },
+ {
+ "name": "Broadwell-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "EPYC-Milan-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-i440fx-8.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "qemu-xhci",
+ "parent": "pci-xhci"
+ },
+ {
+ "name": "n270-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pvpanic",
+ "parent": "isa-device"
+ },
+ {
+ "name": "rng-random",
+ "parent": "rng-backend"
+ },
+ {
+ "name": "Skylake-Server-v4-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Nehalem-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "kvmvapic",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "nvme-ns",
+ "parent": "device"
+ },
+ {
+ "name": "Icelake-Server-v6-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Opteron_G2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "megasas-gen2",
+ "parent": "megasas-base"
+ },
+ {
+ "name": "vhost-user-blk-pci",
+ "parent": "vhost-user-blk-pci-base"
+ },
+ {
+ "name": "authz-simple",
+ "parent": "authz"
+ },
+ {
+ "name": "fw_cfg_io",
+ "parent": "fw_cfg"
+ },
+ {
+ "name": "intel-iommu",
+ "parent": "x86-iommu"
+ },
+ {
+ "name": "none-machine",
+ "parent": "machine"
+ },
+ {
+ "name": "HDA",
+ "parent": "bus"
+ },
+ {
+ "name": "Broadwell-noTSX-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "u2f-passthru",
+ "parent": "u2f-key"
+ },
+ {
+ "name": "Snowridge-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-q35-8.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "IvyBridge-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vfio-pci-igd-lpc-bridge",
+ "parent": "pci-device"
+ },
+ {
+ "name": "sysbus-esp",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "qxl",
+ "parent": "pci-qxl"
+ },
+ {
+ "name": "cryptodev-backend-builtin",
+ "parent": "cryptodev-backend"
+ },
+ {
+ "name": "tls-cipher-suites",
+ "parent": "tls-creds"
+ },
+ {
+ "name": "Broadwell-noTSX-IBRS-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-i440fx-2.2-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "qio-dns-resolver",
+ "parent": "object"
+ },
+ {
+ "name": "hv-syndbg",
+ "parent": "device"
+ },
+ {
+ "name": "virtio-balloon-pci-transitional",
+ "parent": "virtio-balloon-pci-base"
+ },
+ {
+ "name": "igb",
+ "parent": "pci-device"
+ },
+ {
+ "name": "Haswell-v4-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "EPYC-Rome-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "virtio-keyboard-device",
+ "parent": "virtio-input-hid-device"
+ },
+ {
+ "name": "SapphireRapids-v3-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "i82801b11-bridge",
+ "parent": "base-pci-bridge"
+ },
+ {
+ "name": "ramfb",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "hda-output",
+ "parent": "hda-audio"
+ },
+ {
+ "name": "pc-q35-7.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "virtio-input-host-device",
+ "parent": "virtio-input-device"
+ },
+ {
+ "name": "IndustryPack",
+ "parent": "bus"
+ },
+ {
+ "name": "Broadwell-v3-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "ioapic",
+ "parent": "ioapic-common"
+ },
+ {
+ "name": "pentium-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "qemu32-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "xen-sysdev",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "memory-region-portio-list",
+ "parent": "object"
+ },
+ {
+ "name": "Haswell-noTSX-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "chardev-null",
+ "parent": "chardev"
+ },
+ {
+ "name": "pci-serial",
+ "parent": "pci-device"
+ },
+ {
+ "name": "kvm-accel",
+ "parent": "accel"
+ },
+ {
+ "name": "vhost-scsi-pci-non-transitional",
+ "parent": "vhost-scsi-pci-base"
+ },
+ {
+ "name": "Denverton-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "piix3-usb-uhci",
+ "parent": "pci-uhci-usb"
+ },
+ {
+ "name": "Opteron_G4-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "qio-channel-rdma",
+ "parent": "qio-channel"
+ },
+ {
+ "name": "ne2k_isa",
+ "parent": "isa-device"
+ },
+ {
+ "name": "virtio-iommu-memory-region",
+ "parent": "iommu-memory-region"
+ },
+ {
+ "name": "phenom-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "adlib",
+ "parent": "isa-device"
+ },
+ {
+ "name": "vhost-user-gpio-pci",
+ "parent": "vhost-user-gpio-pci-base"
+ },
+ {
+ "name": "vhost-user-gpu",
+ "parent": "virtio-gpu-base"
+ },
+ {
+ "name": "pentium-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-q35-9.1-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "hda-duplex",
+ "parent": "hda-audio"
+ },
+ {
+ "name": "amd-iommu-iommu-memory-region",
+ "parent": "iommu-memory-region"
+ },
+ {
+ "name": "can-bus",
+ "parent": "object"
+ },
+ {
+ "name": "pvpanic-pci",
+ "parent": "pci-device"
+ },
+ {
+ "name": "Cooperlake-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Cascadelake-Server-v3-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Nehalem-IBRS-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "virtio-balloon-device",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "Skylake-Server-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-user-rng-pci",
+ "parent": "vhost-user-rng-pci-base"
+ },
+ {
+ "name": "pc-q35-2.7-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "cfi.pflash01",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "isa-parallel",
+ "parent": "isa-device"
+ },
+ {
+ "name": "pentium2-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "xen-platform",
+ "parent": "pci-device"
+ },
+ {
+ "name": "isa-vga",
+ "parent": "isa-device"
+ },
+ {
+ "name": "EPYC-Rome-v4-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "EPYC-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "virtio-vga-gl",
+ "parent": "virtio-vga-gl-base-type"
+ },
+ {
+ "name": "cxl-upstream",
+ "parent": "pcie-port"
+ },
+ {
+ "name": "i440FX-pcihost",
+ "parent": "pci-host-bridge"
+ },
+ {
+ "name": "isa-debugcon",
+ "parent": "isa-device"
+ },
+ {
+ "name": "qxl-vga",
+ "parent": "pci-qxl"
+ },
+ {
+ "name": "tls-creds-anon",
+ "parent": "tls-creds"
+ },
+ {
+ "name": "cxl-downstream",
+ "parent": "pcie-slot"
+ },
+ {
+ "name": "rng-egd",
+ "parent": "rng-backend"
+ },
+ {
+ "name": "Cascadelake-Server-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "i82558b",
+ "parent": "pci-device"
+ },
+ {
+ "name": "ivshmem-doorbell",
+ "parent": "ivshmem-common"
+ },
+ {
+ "name": "virtio-iommu-device",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "virtio-net-pci",
+ "parent": "virtio-net-pci-base"
+ },
+ {
+ "name": "i82558a",
+ "parent": "pci-device"
+ },
+ {
+ "name": "loader",
+ "parent": "device"
+ },
+ {
+ "name": "usb-serial",
+ "parent": "usb-serial-dev"
+ },
+ {
+ "name": "pvscsi",
+ "parent": "pci-device"
+ },
+ {
+ "name": "Denverton-v3-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-i440fx-5.2-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "accel",
+ "parent": "object"
+ },
+ {
+ "name": "i82801",
+ "parent": "pci-device"
+ },
+ {
+ "name": "virtio-mem-pci",
+ "parent": "virtio-mem-pci-base"
+ },
+ {
+ "name": "chardev-pty",
+ "parent": "chardev"
+ },
+ {
+ "name": "virtio-pmem-pci",
+ "parent": "virtio-pmem-pci-base"
+ },
+ {
+ "name": "virtio-tablet-pci",
+ "parent": "virtio-tablet-pci-base-type"
+ },
+ {
+ "name": "EPYC-Milan-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "dc390",
+ "parent": "am53c974"
+ },
+ {
+ "name": "i6300esb",
+ "parent": "pci-device"
+ },
+ {
+ "name": "Cascadelake-Server-v5-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "floppy",
+ "parent": "device"
+ },
+ {
+ "name": "authz-list",
+ "parent": "authz"
+ },
+ {
+ "name": "pc-i440fx-4.2-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "Opteron_G4-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "EPYC-v4-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "chardev-qemu-vdagent",
+ "parent": "chardev"
+ },
+ {
+ "name": "vhost-user-snd",
+ "parent": "vhost-user-base"
+ },
+ {
+ "name": "vhost-user-fs-pci",
+ "parent": "vhost-user-fs-pci-base"
+ },
+ {
+ "name": "sb16",
+ "parent": "isa-device"
+ },
+ {
+ "name": "ich9-ahci",
+ "parent": "pci-device"
+ },
+ {
+ "name": "pc-i440fx-2.5-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "vhost-user-scsi-pci-transitional",
+ "parent": "vhost-user-scsi-pci-base"
+ },
+ {
+ "name": "Westmere-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vmbus",
+ "parent": "bus"
+ },
+ {
+ "name": "chardev-pipe",
+ "parent": "chardev-fd"
+ },
+ {
+ "name": "i2c-ddc",
+ "parent": "i2c-slave"
+ },
+ {
+ "name": "can-host-socketcan",
+ "parent": "can-host"
+ },
+ {
+ "name": "Skylake-Server-noTSX-IBRS-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "i82562",
+ "parent": "pci-device"
+ },
+ {
+ "name": "pc-q35-4.2-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "pci-bridge-seat",
+ "parent": "pci-bridge"
+ },
+ {
+ "name": "kvm32-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "lsi53c895a",
+ "parent": "pci-device"
+ },
+ {
+ "name": "qio-channel-block",
+ "parent": "qio-channel"
+ },
+ {
+ "name": "pc-i440fx-6.2-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "SandyBridge-IBRS-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "chardev-mux",
+ "parent": "chardev"
+ },
+ {
+ "name": "intel-hda",
+ "parent": "intel-hda-generic"
+ },
+ {
+ "name": "base-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "GraniteRapids-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "hyperv-synic",
+ "parent": "device"
+ },
+ {
+ "name": "Opteron_G1-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "kvm64-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "IDE",
+ "parent": "bus"
+ },
+ {
+ "name": "486-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pcie-root-port",
+ "parent": "pcie-root-port-base"
+ },
+ {
+ "name": "mptsas1068",
+ "parent": "pci-device"
+ },
+ {
+ "name": "scsi-block",
+ "parent": "scsi-disk-base"
+ },
+ {
+ "name": "chardev-spicevmc",
+ "parent": "chardev-spice"
+ },
+ {
+ "name": "Snowridge-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-vdpa-device-pci",
+ "parent": "vhost-vdpa-device-pci-base"
+ },
+ {
+ "name": "q35-pcihost",
+ "parent": "pcie-host-bridge"
+ },
+ {
+ "name": "legacy-reset",
+ "parent": "object"
+ },
+ {
+ "name": "SapphireRapids-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-i440fx-2.0-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "pc-i440fx-2.12-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "SCSI",
+ "parent": "bus"
+ },
+ {
+ "name": "Penryn-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "hda-micro",
+ "parent": "hda-audio"
+ },
+ {
+ "name": "pxb-cxl",
+ "parent": "pxb-pcie"
+ },
+ {
+ "name": "Dhyana-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "rng-builtin",
+ "parent": "rng-backend"
+ },
+ {
+ "name": "sd-bus",
+ "parent": "bus"
+ },
+ {
+ "name": "virtio-vga",
+ "parent": "virtio-vga-base-type"
+ },
+ {
+ "name": "filter-dump",
+ "parent": "netfilter"
+ },
+ {
+ "name": "virtio-blk-pci-transitional",
+ "parent": "virtio-blk-pci-base"
+ },
+ {
+ "name": "chardev-ringbuf",
+ "parent": "chardev"
+ },
+ {
+ "name": "virtio-pci-bus",
+ "parent": "virtio-bus"
+ },
+ {
+ "name": "smbus-ipmi",
+ "parent": "smbus-device"
+ },
+ {
+ "name": "Skylake-Server-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "vhost-user-blk",
+ "parent": "virtio-device"
+ },
+ {
+ "name": "nvme-subsys",
+ "parent": "device"
+ },
+ {
+ "name": "Haswell-noTSX-IBRS-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "SandyBridge-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pc-q35-5.2-machine",
+ "parent": "generic-pc-machine"
+ },
+ {
+ "name": "qio-channel-tls",
+ "parent": "qio-channel"
+ },
+ {
+ "name": "GraniteRapids-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "chardev-stdio",
+ "parent": "chardev-fd"
+ },
+ {
+ "name": "piix4-isa",
+ "parent": "pci-piix"
+ },
+ {
+ "name": "Icelake-Server-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "authz-pam",
+ "parent": "authz"
+ },
+ {
+ "name": "Dhyana-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ }
+ ],
+ "id": "libvirt-6"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "virtio-blk-pci"
+ },
+ "id": "libvirt-7"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "migrate-extra",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "ats",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-ignore-backend-features",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-pm-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "aer",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-flr-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnkctl-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-ats-page-aligned",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "page-per-vq",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-deverr-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "virtio-pci-bus-master-bug-migration",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "modern-pio-notify",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-pcie",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "vectors",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "ioeventfd",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "class",
+ "type": "uint32"
+ },
+ {
+ "default-value": "auto",
+ "name": "disable-legacy",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": false,
+ "name": "disable-modern",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "notify_on_empty",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "lcyls",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "share-rw",
+ "type": "bool"
+ },
+ {
+ "default-value": 256,
+ "name": "queue-size",
+ "type": "uint16"
+ },
+ {
+ "default-value": "auto",
+ "name": "account-invalid",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": 0,
+ "name": "lsecs",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "min_io_size",
+ "type": "size"
+ },
+ {
+ "default-value": 0,
+ "name": "secs",
+ "type": "uint32"
+ },
+ {
+ "default-value": 65535,
+ "name": "num-queues",
+ "type": "uint16"
+ },
+ {
+ "name": "iothread",
+ "type": "link<iothread>"
+ },
+ {
+ "name": "serial",
+ "type": "str"
+ },
+ {
+ "default-value": 0,
+ "name": "cyls",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "lheads",
+ "type": "uint32"
+ },
+ {
+ "name": "virtio-backend",
+ "type": "child<virtio-blk-device>"
+ },
+ {
+ "default-value": 0,
+ "name": "heads",
+ "type": "uint32"
+ },
+ {
+ "name": "bootindex",
+ "type": "int32"
+ },
+ {
+ "default-value": true,
+ "name": "config-wce",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "seg-max-adjust",
+ "type": "bool"
+ },
+ {
+ "name": "drive",
+ "description": "Node name or ID of a block device to use as a backend",
+ "type": "str"
+ },
+ {
+ "default-value": "auto",
+ "name": "werror",
+ "description": "Error handling policy, report/ignore/enospc/stop/auto",
+ "type": "BlockdevOnError"
+ },
+ {
+ "name": "iothread-vq-mapping",
+ "description": "IOThread virtqueue mapping list [{\"iothread\":\"<id>\", \"vqs\":[1,2,3,...]},...]",
+ "type": "IOThreadVirtQueueMappingList"
+ },
+ {
+ "default-value": true,
+ "name": "report-discard-granularity",
+ "type": "bool"
+ },
+ {
+ "default-value": "auto",
+ "name": "rerror",
+ "description": "Error handling policy, report/ignore/enospc/stop/auto",
+ "type": "BlockdevOnError"
+ },
+ {
+ "default-value": "auto",
+ "name": "write-cache",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": true,
+ "name": "use-disabled-flag",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-legacy-check",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "iommu_platform",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-started",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "physical_block_size",
+ "description": "A power of two between 512 B and 2 MiB",
+ "type": "size"
+ },
+ {
+ "default-value": false,
+ "name": "scsi",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "any_layout",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "opt_io_size",
+ "type": "size"
+ },
+ {
+ "default-value": 0,
+ "name": "logical_block_size",
+ "description": "A power of two between 512 B and 2 MiB",
+ "type": "size"
+ },
+ {
+ "default-value": 4194303,
+ "name": "max-discard-sectors",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "packed",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "discard",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "discard_granularity",
+ "type": "size"
+ },
+ {
+ "default-value": true,
+ "name": "request-merging",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "queue_reset",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "write-zeroes",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 4194303,
+ "name": "max-write-zeroes-sectors",
+ "type": "uint32"
+ },
+ {
+ "default-value": "auto",
+ "name": "account-failed",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": true,
+ "name": "indirect_desc",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "event_idx",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": "auto",
+ "name": "backend_defaults",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": true,
+ "name": "x-enable-wce-if-config-wce",
+ "type": "bool"
+ }
+ ],
+ "id": "libvirt-7"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "virtio-net-pci"
+ },
+ "id": "libvirt-8"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "migrate-extra",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "ats",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-ignore-backend-features",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-pm-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "aer",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-flr-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnkctl-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-ats-page-aligned",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "page-per-vq",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-deverr-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "virtio-pci-bus-master-bug-migration",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "modern-pio-notify",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-pcie",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "vectors",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "ioeventfd",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": "auto",
+ "name": "disable-legacy",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": false,
+ "name": "disable-modern",
+ "type": "bool"
+ },
+ {
+ "name": "mac",
+ "description": "Ethernet 6-byte MAC Address, example: 52:54:00:12:34:56",
+ "type": "str"
+ },
+ {
+ "default-value": true,
+ "name": "notify_on_empty",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "gso",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 150000,
+ "name": "x-txtimer",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "mq",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "mrg_rxbuf",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "host_mtu",
+ "type": "uint16"
+ },
+ {
+ "default-value": 256,
+ "name": "x-txburst",
+ "type": "int32"
+ },
+ {
+ "name": "tx",
+ "type": "str"
+ },
+ {
+ "default-value": false,
+ "name": "rss",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "host_uso",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "status",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "failover",
+ "type": "bool"
+ },
+ {
+ "name": "virtio-backend",
+ "type": "child<virtio-net-device>"
+ },
+ {
+ "default-value": false,
+ "name": "packed",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "ctrl_mac_addr",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "guest_tso4",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 256,
+ "name": "tx_queue_size",
+ "type": "uint16"
+ },
+ {
+ "default-value": false,
+ "name": "iommu_platform",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hash",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "ctrl_guest_offloads",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "host_tso6",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "guest_ufo",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "bootindex",
+ "type": "int32"
+ },
+ {
+ "default-value": true,
+ "name": "ctrl_vq",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "guest_ecn",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-started",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "guest_uso6",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "host_ufo",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-legacy-check",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "any_layout",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "host_ecn",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": [],
+ "name": "ebpf-rss-fds",
+ "type": "list"
+ },
+ {
+ "default-value": false,
+ "name": "guest_rsc_ext",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "duplex",
+ "type": "str"
+ },
+ {
+ "default-value": 300000,
+ "name": "rsc_interval",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "guest_announce",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "netdev",
+ "description": "ID of a netdev to use as a backend",
+ "type": "str"
+ },
+ {
+ "default-value": true,
+ "name": "host_tso4",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-mtu-bypass-backend",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "queue_reset",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "ctrl_rx_extra",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "guest_csum",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 256,
+ "name": "rx_queue_size",
+ "type": "uint16"
+ },
+ {
+ "default-value": true,
+ "name": "guest_uso4",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-disabled-flag",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "event_idx",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "indirect_desc",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "ctrl_vlan",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "guest_tso6",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": -1,
+ "name": "speed",
+ "type": "int32"
+ },
+ {
+ "default-value": true,
+ "name": "csum",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "ctrl_rx",
+ "description": "on/off",
+ "type": "bool"
+ }
+ ],
+ "id": "libvirt-8"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "virtio-scsi-pci"
+ },
+ "id": "libvirt-9"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "migrate-extra",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "ats",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-ignore-backend-features",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-pm-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "aer",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-flr-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnkctl-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-ats-page-aligned",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "page-per-vq",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-deverr-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "virtio-pci-bus-master-bug-migration",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "modern-pio-notify",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-pcie",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "vectors",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "ioeventfd",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": "auto",
+ "name": "disable-legacy",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": false,
+ "name": "disable-modern",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "indirect_desc",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "iommu_platform",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "hotplug",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "queue_reset",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-disabled-flag",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "event_idx",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "num_queues",
+ "type": "uint32"
+ },
+ {
+ "default-value": 65535,
+ "name": "max_sectors",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "any_layout",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-legacy-check",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "notify_on_empty",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "iothread",
+ "type": "link<iothread>"
+ },
+ {
+ "default-value": true,
+ "name": "param_change",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "packed",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-started",
+ "type": "bool"
+ },
+ {
+ "default-value": 256,
+ "name": "virtqueue_size",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "seg_max_adjust",
+ "type": "bool"
+ },
+ {
+ "default-value": 128,
+ "name": "cmd_per_lun",
+ "type": "uint32"
+ },
+ {
+ "name": "virtio-backend",
+ "type": "child<virtio-scsi-device>"
+ }
+ ],
+ "id": "libvirt-9"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "virtio-net-ccw"
+ },
+ "id": "libvirt-10"
+}
+
+{
+ "id": "libvirt-10",
+ "error": {
+ "class": "DeviceNotFound",
+ "desc": "Device 'virtio-net-ccw' not found"
+ }
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "virtio-scsi-ccw"
+ },
+ "id": "libvirt-11"
+}
+
+{
+ "id": "libvirt-11",
+ "error": {
+ "class": "DeviceNotFound",
+ "desc": "Device 'virtio-scsi-ccw' not found"
+ }
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "vfio-pci"
+ },
+ "id": "libvirt-12"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": "on",
+ "name": "x-pre-copy-dirty-page-tracking",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": false,
+ "name": "migration-events",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-no-kvm-intx",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "x-pci-sub-device-id",
+ "type": "uint32"
+ },
+ {
+ "name": "fd",
+ "type": "string"
+ },
+ {
+ "default-value": "auto",
+ "name": "enable-migration",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": true,
+ "name": "skip-vsc-check",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "x-pci-device-id",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-no-kvm-msi",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "xres",
+ "type": "uint32"
+ },
+ {
+ "default-value": "off",
+ "name": "display",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "x-pci-sub-vendor-id",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-no-mmap",
+ "type": "bool"
+ },
+ {
+ "default-value": "off",
+ "name": "x-msix-relocation",
+ "description": "off/auto/bar0/bar1/bar2/bar3/bar4/bar5",
+ "type": "OffAutoPCIBAR"
+ },
+ {
+ "default-value": true,
+ "name": "x-req",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-no-kvm-ioeventfd",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "x-pci-vendor-id",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-no-vfio-ioeventfd",
+ "type": "bool"
+ },
+ {
+ "name": "x-nv-gpudirect-clique",
+ "description": "NVIDIA GPUDirect Clique ID (0 - 15)",
+ "type": "uint4"
+ },
+ {
+ "default-value": 1100,
+ "name": "x-intx-mmap-timeout-ms",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "x-igd-gms",
+ "type": "uint32"
+ },
+ {
+ "name": "sysfsdev",
+ "type": "str"
+ },
+ {
+ "name": "vf-token",
+ "description": "UUID (aka GUID) or \"auto\" for random value (default)",
+ "type": "str"
+ },
+ {
+ "default-value": 0,
+ "name": "yres",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-vga",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-igd-opregion",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-no-kvm-msix",
+ "type": "bool"
+ },
+ {
+ "name": "iommufd",
+ "type": "link<iommufd>"
+ },
+ {
+ "name": "host",
+ "description": "Address (bus/device/function) of the host device, example: 04:10.0",
+ "type": "str"
+ },
+ {
+ "default-value": false,
+ "name": "x-no-geforce-quirks",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-balloon-allowed",
+ "type": "bool"
+ },
+ {
+ "name": "bootindex",
+ "type": "int32"
+ }
+ ],
+ "id": "libvirt-12"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "scsi-hd"
+ },
+ "id": "libvirt-13"
+}
+
+{
+ "return": [
+ {
+ "default-value": 4294967295,
+ "name": "scsi-id",
+ "type": "uint32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "lun",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "channel",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "lheads",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "lcyls",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "share-rw",
+ "type": "bool"
+ },
+ {
+ "default-value": "auto",
+ "name": "account-invalid",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": 0,
+ "name": "lsecs",
+ "type": "uint32"
+ },
+ {
+ "default-value": 5,
+ "name": "scsi_version",
+ "type": "int32"
+ },
+ {
+ "default-value": 0,
+ "name": "secs",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "removable",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "ver",
+ "type": "str"
+ },
+ {
+ "default-value": 1073741824,
+ "name": "max_unmap_size",
+ "type": "uint64"
+ },
+ {
+ "default-value": 0,
+ "name": "cyls",
+ "type": "uint32"
+ },
+ {
+ "name": "serial",
+ "type": "str"
+ },
+ {
+ "default-value": 0,
+ "name": "min_io_size",
+ "type": "size"
+ },
+ {
+ "name": "product",
+ "type": "str"
+ },
+ {
+ "default-value": 0,
+ "name": "rotation_rate",
+ "type": "uint16"
+ },
+ {
+ "default-value": 0,
+ "name": "heads",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "dpofua",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "drive",
+ "description": "Node name or ID of a block device to use as a backend",
+ "type": "str"
+ },
+ {
+ "default-value": "auto",
+ "name": "werror",
+ "description": "Error handling policy, report/ignore/enospc/stop/auto",
+ "type": "BlockdevOnError"
+ },
+ {
+ "default-value": 0,
+ "name": "wwn",
+ "type": "uint64"
+ },
+ {
+ "name": "vendor",
+ "type": "str"
+ },
+ {
+ "default-value": "auto",
+ "name": "rerror",
+ "description": "Error handling policy, report/ignore/enospc/stop/auto",
+ "type": "BlockdevOnError"
+ },
+ {
+ "default-value": "auto",
+ "name": "write-cache",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": 0,
+ "name": "physical_block_size",
+ "description": "A power of two between 512 B and 2 MiB",
+ "type": "size"
+ },
+ {
+ "default-value": 2147483647,
+ "name": "max_io_size",
+ "type": "uint64"
+ },
+ {
+ "default-value": false,
+ "name": "quirk_mode_page_vendor_specific_apple",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "opt_io_size",
+ "type": "size"
+ },
+ {
+ "default-value": 0,
+ "name": "logical_block_size",
+ "description": "A power of two between 512 B and 2 MiB",
+ "type": "size"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "discard_granularity",
+ "type": "size"
+ },
+ {
+ "default-value": 0,
+ "name": "port_wwn",
+ "type": "uint64"
+ },
+ {
+ "default-value": 0,
+ "name": "port_index",
+ "type": "uint16"
+ },
+ {
+ "default-value": "auto",
+ "name": "account-failed",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "name": "device_id",
+ "type": "str"
+ },
+ {
+ "default-value": "auto",
+ "name": "backend_defaults",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "name": "bootindex",
+ "type": "int32"
+ }
+ ],
+ "id": "libvirt-13"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "ide-hd"
+ },
+ "id": "libvirt-14"
+}
+
+{
+ "return": [
+ {
+ "default-value": false,
+ "name": "win2k-install-hack",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "unit",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "lsecs",
+ "type": "uint32"
+ },
+ {
+ "default-value": "auto",
+ "name": "account-invalid",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "name": "model",
+ "type": "str"
+ },
+ {
+ "default-value": 0,
+ "name": "lheads",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "rotation_rate",
+ "type": "uint16"
+ },
+ {
+ "name": "drive",
+ "description": "Node name or ID of a block device to use as a backend",
+ "type": "str"
+ },
+ {
+ "name": "serial",
+ "type": "str"
+ },
+ {
+ "default-value": 0,
+ "name": "logical_block_size",
+ "description": "A power of two between 512 B and 2 MiB",
+ "type": "size"
+ },
+ {
+ "name": "ver",
+ "type": "str"
+ },
+ {
+ "default-value": false,
+ "name": "share-rw",
+ "type": "bool"
+ },
+ {
+ "default-value": "auto",
+ "name": "write-cache",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": 0,
+ "name": "heads",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "wwn",
+ "type": "uint64"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "discard_granularity",
+ "type": "size"
+ },
+ {
+ "default-value": "auto",
+ "name": "backend_defaults",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": 0,
+ "name": "cyls",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "lcyls",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "opt_io_size",
+ "type": "size"
+ },
+ {
+ "default-value": "auto",
+ "name": "rerror",
+ "description": "Error handling policy, report/ignore/enospc/stop/auto",
+ "type": "BlockdevOnError"
+ },
+ {
+ "default-value": "auto",
+ "name": "bios-chs-trans",
+ "description": "Logical CHS translation algorithm, auto/none/lba/large/rechs",
+ "type": "BiosAtaTranslation"
+ },
+ {
+ "default-value": 0,
+ "name": "min_io_size",
+ "type": "size"
+ },
+ {
+ "default-value": "auto",
+ "name": "account-failed",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": 0,
+ "name": "physical_block_size",
+ "description": "A power of two between 512 B and 2 MiB",
+ "type": "size"
+ },
+ {
+ "default-value": 0,
+ "name": "secs",
+ "type": "uint32"
+ },
+ {
+ "default-value": "auto",
+ "name": "werror",
+ "description": "Error handling policy, report/ignore/enospc/stop/auto",
+ "type": "BlockdevOnError"
+ },
+ {
+ "name": "bootindex",
+ "type": "int32"
+ }
+ ],
+ "id": "libvirt-14"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "PIIX4_PM"
+ },
+ "id": "libvirt-15"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "acpi-pci-hotplug-with-bridge-support",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "smb_io_base",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "disable_s3",
+ "type": "uint8"
+ },
+ {
+ "default-value": true,
+ "name": "acpi-root-pci-hotplug",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "smm-enabled",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "disable_s4",
+ "type": "uint8"
+ },
+ {
+ "default-value": true,
+ "name": "memory-hotplug-support",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "smm-compat",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-not-migrate-acpi-index",
+ "type": "bool"
+ },
+ {
+ "default-value": 2,
+ "name": "s4_val",
+ "type": "uint8"
+ },
+ {
+ "name": "smi-irq[0]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "unnamed-gpio-out[0]",
+ "type": "link<irq>"
+ }
+ ],
+ "id": "libvirt-15"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "usb-redir"
+ },
+ "id": "libvirt-16"
+}
+
+{
+ "return": [
+ {
+ "name": "pcap",
+ "type": "str"
+ },
+ {
+ "name": "port",
+ "type": "str"
+ },
+ {
+ "default-value": true,
+ "name": "msos-desc",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "serial",
+ "type": "str"
+ },
+ {
+ "name": "filter",
+ "type": "str"
+ },
+ {
+ "default-value": true,
+ "name": "streams",
+ "type": "bool"
+ },
+ {
+ "name": "chardev",
+ "description": "ID of a chardev to use as a backend",
+ "type": "str"
+ },
+ {
+ "default-value": 2,
+ "name": "debug",
+ "type": "uint8"
+ },
+ {
+ "default-value": true,
+ "name": "suppress-remote-wake",
+ "type": "bool"
+ },
+ {
+ "name": "bootindex",
+ "type": "int32"
+ },
+ {
+ "name": "attached",
+ "type": "bool"
+ }
+ ],
+ "id": "libvirt-16"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "usb-storage"
+ },
+ "id": "libvirt-17"
+}
+
+{
+ "return": [
+ {
+ "name": "pcap",
+ "type": "str"
+ },
+ {
+ "name": "port",
+ "type": "str"
+ },
+ {
+ "default-value": true,
+ "name": "msos-desc",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "serial",
+ "type": "str"
+ },
+ {
+ "default-value": false,
+ "name": "commandlog",
+ "type": "bool"
+ },
+ {
+ "default-value": "auto",
+ "name": "rerror",
+ "description": "Error handling policy, report/ignore/enospc/stop/auto",
+ "type": "BlockdevOnError"
+ },
+ {
+ "default-value": 0,
+ "name": "min_io_size",
+ "type": "size"
+ },
+ {
+ "default-value": "auto",
+ "name": "backend_defaults",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": false,
+ "name": "removable",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "share-rw",
+ "type": "bool"
+ },
+ {
+ "default-value": "auto",
+ "name": "account-failed",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": 0,
+ "name": "logical_block_size",
+ "description": "A power of two between 512 B and 2 MiB",
+ "type": "size"
+ },
+ {
+ "default-value": "auto",
+ "name": "write-cache",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": 0,
+ "name": "opt_io_size",
+ "type": "size"
+ },
+ {
+ "default-value": "auto",
+ "name": "account-invalid",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "name": "drive",
+ "description": "Node name or ID of a block device to use as a backend",
+ "type": "str"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "discard_granularity",
+ "type": "size"
+ },
+ {
+ "default-value": 0,
+ "name": "physical_block_size",
+ "description": "A power of two between 512 B and 2 MiB",
+ "type": "size"
+ },
+ {
+ "default-value": "auto",
+ "name": "werror",
+ "description": "Error handling policy, report/ignore/enospc/stop/auto",
+ "type": "BlockdevOnError"
+ },
+ {
+ "name": "bootindex",
+ "type": "int32"
+ },
+ {
+ "name": "attached",
+ "type": "bool"
+ }
+ ],
+ "id": "libvirt-17"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "kvm-pit"
+ },
+ "id": "libvirt-18"
+}
+
+{
+ "return": [
+ {
+ "default-value": 4294967295,
+ "name": "iobase",
+ "type": "uint32"
+ },
+ {
+ "default-value": "delay",
+ "name": "lost_tick_policy",
+ "type": "LostTickPolicy"
+ }
+ ],
+ "id": "libvirt-18"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "VGA"
+ },
+ "id": "libvirt-19"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "refresh_rate",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "global-vmstate",
+ "type": "bool"
+ },
+ {
+ "name": "big-endian-framebuffer",
+ "type": "bool"
+ },
+ {
+ "default-value": 16,
+ "name": "vgamem_mb",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "qemu-extended-regs",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "mmio",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "ymax",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "yres",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "xmax",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "edid",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "xres",
+ "type": "uint32"
+ }
+ ],
+ "id": "libvirt-19"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "vmware-svga"
+ },
+ "id": "libvirt-20"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "global-vmstate",
+ "type": "bool"
+ },
+ {
+ "default-value": 16,
+ "name": "vgamem_mb",
+ "type": "uint32"
+ }
+ ],
+ "id": "libvirt-20"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "qxl"
+ },
+ "id": "libvirt-21"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "global-vmstate",
+ "type": "bool"
+ },
+ {
+ "default-value": 16,
+ "name": "vgamem_mb",
+ "type": "uint32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "vram64_size_mb",
+ "type": "uint32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "vram_size_mb",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "debug",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "max_outputs",
+ "type": "uint16"
+ },
+ {
+ "default-value": 5,
+ "name": "revision",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "cmdlog",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "yres",
+ "type": "uint32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "ram_size_mb",
+ "type": "uint32"
+ },
+ {
+ "default-value": 67108864,
+ "name": "ram_size",
+ "type": "uint32"
+ },
+ {
+ "default-value": 67108864,
+ "name": "vram_size",
+ "type": "uint64"
+ },
+ {
+ "default-value": 0,
+ "name": "guestdebug",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "xres",
+ "type": "uint32"
+ },
+ {
+ "default-value": 1024,
+ "name": "surfaces",
+ "type": "int32"
+ }
+ ],
+ "id": "libvirt-21"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "virtio-gpu-pci"
+ },
+ "id": "libvirt-22"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "migrate-extra",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "ats",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-ignore-backend-features",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-pm-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "aer",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-flr-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnkctl-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-ats-page-aligned",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "page-per-vq",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-deverr-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "virtio-pci-bus-master-bug-migration",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "modern-pio-notify",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-pcie",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 3,
+ "name": "vectors",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "ioeventfd",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": "auto",
+ "name": "disable-legacy",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": false,
+ "name": "disable-modern",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "indirect_desc",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 800,
+ "name": "yres",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "iommu_platform",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "event_idx",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "edid",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "hostmem",
+ "type": "size"
+ },
+ {
+ "default-value": 2,
+ "name": "x-scanout-vmstate-version",
+ "type": "uint8"
+ },
+ {
+ "default-value": true,
+ "name": "any_layout",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-legacy-check",
+ "type": "bool"
+ },
+ {
+ "default-value": 268435456,
+ "name": "max_hostmem",
+ "type": "size"
+ },
+ {
+ "default-value": true,
+ "name": "notify_on_empty",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "queue_reset",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "packed",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-started",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-disabled-flag",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "blob",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "max_outputs",
+ "type": "uint32"
+ },
+ {
+ "default-value": 1280,
+ "name": "xres",
+ "type": "uint32"
+ },
+ {
+ "name": "virtio-backend",
+ "type": "child<virtio-gpu-device>"
+ }
+ ],
+ "id": "libvirt-22"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "virtio-gpu-device"
+ },
+ "id": "libvirt-23"
+}
+
+{
+ "return": [
+ {
+ "default-value": true,
+ "name": "queue_reset",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-disabled-flag",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "packed",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "iommu_platform",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "event_idx",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-legacy-check",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "notify_on_empty",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "any_layout",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-started",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "indirect_desc",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "max_outputs",
+ "type": "uint32"
+ },
+ {
+ "default-value": 1280,
+ "name": "xres",
+ "type": "uint32"
+ },
+ {
+ "default-value": 2,
+ "name": "x-scanout-vmstate-version",
+ "type": "uint8"
+ },
+ {
+ "default-value": 800,
+ "name": "yres",
+ "type": "uint32"
+ },
+ {
+ "default-value": 268435456,
+ "name": "max_hostmem",
+ "type": "size"
+ },
+ {
+ "default-value": true,
+ "name": "edid",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "blob",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "hostmem",
+ "type": "size"
+ }
+ ],
+ "id": "libvirt-23"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "ICH9-LPC"
+ },
+ "id": "libvirt-24"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-smi-cpu-hotplug",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-smi-cpu-hotunplug",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "smm-compat",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "noreboot",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-smi-broadcast",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "smm-enabled",
+ "type": "bool"
+ },
+ {
+ "name": "acpi-pci-hotplug-with-bridge-support",
+ "type": "bool"
+ },
+ {
+ "name": "gsi[12]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "gsi[16]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "gsi[13]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "rtc",
+ "type": "child<mc146818rtc>"
+ },
+ {
+ "name": "gsi[14]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "disable_s4",
+ "type": "uint8"
+ },
+ {
+ "name": "disable_s3",
+ "type": "uint8"
+ },
+ {
+ "name": "gsi[15]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "sci_int",
+ "type": "uint8"
+ },
+ {
+ "name": "acpi_disable_cmd",
+ "type": "uint8"
+ },
+ {
+ "name": "gsi[17]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "pm_io_base",
+ "type": "uint32"
+ },
+ {
+ "name": "gsi[18]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "gsi[19]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "enable_tco",
+ "type": "bool"
+ },
+ {
+ "name": "s4_val",
+ "type": "uint8"
+ },
+ {
+ "name": "memory-hotplug-support",
+ "type": "bool"
+ },
+ {
+ "name": "gsi[0]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "x-smi-negotiated-features",
+ "type": "uint64"
+ },
+ {
+ "name": "gsi[1]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "gsi[20]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "gpe0_blk",
+ "type": "uint32"
+ },
+ {
+ "name": "gsi[21]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "gsi[2]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "x-keep-pci-slot-hpc",
+ "type": "bool"
+ },
+ {
+ "name": "gsi[3]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "gsi[22]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "gpe0_blk_len",
+ "type": "uint32"
+ },
+ {
+ "name": "gsi[4]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "gsi[23]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "acpi_enable_cmd",
+ "type": "uint8"
+ },
+ {
+ "name": "gsi[5]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "gsi[6]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "cpu-hotplug-legacy",
+ "type": "bool"
+ },
+ {
+ "name": "gsi[7]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "gsi[8]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "gsi[10]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "gsi[9]",
+ "type": "link<irq>"
+ },
+ {
+ "name": "gsi[11]",
+ "type": "link<irq>"
+ }
+ ],
+ "id": "libvirt-24"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "virtio-balloon-pci"
+ },
+ "id": "libvirt-25"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "migrate-extra",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "ats",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-ignore-backend-features",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-pm-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "aer",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-flr-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnkctl-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-ats-page-aligned",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "page-per-vq",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-deverr-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "virtio-pci-bus-master-bug-migration",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "modern-pio-notify",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-pcie",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": "auto",
+ "name": "disable-legacy",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": false,
+ "name": "disable-modern",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "free-page-reporting",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "indirect_desc",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "guest-stats-polling-interval",
+ "type": "int"
+ },
+ {
+ "default-value": false,
+ "name": "iommu_platform",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "deflate-on-oom",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-disabled-flag",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "event_idx",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "page-poison",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "queue_reset",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "guest-stats",
+ "type": "guest statistics"
+ },
+ {
+ "default-value": true,
+ "name": "any_layout",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-legacy-check",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "notify_on_empty",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "iothread",
+ "type": "link<iothread>"
+ },
+ {
+ "default-value": false,
+ "name": "packed",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "qemu-4-0-config-size",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-started",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "free-page-hint",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "virtio-backend",
+ "type": "child<virtio-balloon-device>"
+ }
+ ],
+ "id": "libvirt-25"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "virtio-balloon-ccw"
+ },
+ "id": "libvirt-26"
+}
+
+{
+ "id": "libvirt-26",
+ "error": {
+ "class": "DeviceNotFound",
+ "desc": "Device 'virtio-balloon-ccw' not found"
+ }
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "virtio-balloon-device"
+ },
+ "id": "libvirt-27"
+}
+
+{
+ "return": [
+ {
+ "default-value": true,
+ "name": "queue_reset",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-disabled-flag",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "packed",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "iommu_platform",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "event_idx",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-legacy-check",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "notify_on_empty",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "any_layout",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-started",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "indirect_desc",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "iothread",
+ "type": "link<iothread>"
+ },
+ {
+ "default-value": false,
+ "name": "deflate-on-oom",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "free-page-hint",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "page-poison",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "qemu-4-0-config-size",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "free-page-reporting",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "guest-stats-polling-interval",
+ "type": "int"
+ },
+ {
+ "name": "guest-stats",
+ "type": "guest statistics"
+ }
+ ],
+ "id": "libvirt-27"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "intel-iommu"
+ },
+ "id": "libvirt-28"
+}
+
+{
+ "return": [
+ {
+ "default-value": true,
+ "name": "pt",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "device-iotlb",
+ "type": "bool"
+ },
+ {
+ "default-value": "auto",
+ "name": "intremap",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": false,
+ "name": "x-scalable-mode",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "dma-translation",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "caching-mode",
+ "type": "bool"
+ },
+ {
+ "default-value": 39,
+ "name": "aw-bits",
+ "type": "uint8"
+ },
+ {
+ "default-value": "auto",
+ "name": "eim",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": 0,
+ "name": "version",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-buggy-eim",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-pasid-mode",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "dma-drain",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "snoop-control",
+ "type": "bool"
+ }
+ ],
+ "id": "libvirt-28"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "mch"
+ },
+ "id": "libvirt-29"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "smbase-smram",
+ "type": "bool"
+ },
+ {
+ "default-value": 16,
+ "name": "extended-tseg-mbytes",
+ "type": "uint16"
+ }
+ ],
+ "id": "libvirt-29"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "nvdimm"
+ },
+ "id": "libvirt-30"
+}
+
+{
+ "return": [
+ {
+ "name": "memdev",
+ "type": "link<memory-backend>"
+ },
+ {
+ "default-value": 0,
+ "name": "node",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "addr",
+ "type": "uint64"
+ },
+ {
+ "default-value": -1,
+ "name": "slot",
+ "type": "int32"
+ },
+ {
+ "default-value": false,
+ "name": "unarmed",
+ "type": "bool"
+ },
+ {
+ "name": "uuid",
+ "type": "QemuUUID"
+ },
+ {
+ "name": "label-size",
+ "type": "int"
+ },
+ {
+ "name": "size",
+ "type": "uint64"
+ }
+ ],
+ "id": "libvirt-30"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "pcie-root-port"
+ },
+ "id": "libvirt-31"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-pci-express-writeable-slt-bug",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "port",
+ "type": "uint8"
+ },
+ {
+ "default-value": 8,
+ "name": "aer_log_max",
+ "type": "uint16"
+ },
+ {
+ "default-value": false,
+ "name": "x-do-not-expose-native-hotplug-cap",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "hotplug",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "slot",
+ "type": "uint16"
+ },
+ {
+ "default-value": 0,
+ "name": "chassis",
+ "type": "uint8"
+ },
+ {
+ "default-value": true,
+ "name": "power_controller_present",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "disable-acs",
+ "type": "bool"
+ },
+ {
+ "default-value": 18446744073709551615,
+ "name": "mem-reserve",
+ "type": "size"
+ },
+ {
+ "default-value": 18446744073709551615,
+ "name": "pref64-reserve",
+ "type": "size"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "bus-reserve",
+ "type": "uint32"
+ },
+ {
+ "default-value": "32",
+ "name": "x-width",
+ "description": "1/2/4/8/12/16/32",
+ "type": "PCIELinkWidth"
+ },
+ {
+ "default-value": true,
+ "name": "x-migrate-msix",
+ "type": "bool"
+ },
+ {
+ "default-value": 18446744073709551615,
+ "name": "io-reserve",
+ "type": "size"
+ },
+ {
+ "default-value": "16",
+ "name": "x-speed",
+ "description": "2_5/5/8/16/32/64",
+ "type": "PCIELinkSpeed"
+ },
+ {
+ "default-value": 18446744073709551615,
+ "name": "pref32-reserve",
+ "type": "size"
+ }
+ ],
+ "id": "libvirt-31"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "usb-host"
+ },
+ "id": "libvirt-32"
+}
+
+{
+ "return": [
+ {
+ "name": "pcap",
+ "type": "str"
+ },
+ {
+ "name": "port",
+ "type": "str"
+ },
+ {
+ "default-value": true,
+ "name": "msos-desc",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "serial",
+ "type": "str"
+ },
+ {
+ "default-value": true,
+ "name": "pipeline",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "hostbus",
+ "type": "uint32"
+ },
+ {
+ "default-value": 4,
+ "name": "isobufs",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "vendorid",
+ "type": "uint32"
+ },
+ {
+ "default-value": 0,
+ "name": "productid",
+ "type": "uint32"
+ },
+ {
+ "name": "hostport",
+ "type": "str"
+ },
+ {
+ "name": "hostdevice",
+ "type": "str"
+ },
+ {
+ "default-value": 0,
+ "name": "hostaddr",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "suppress-remote-wake",
+ "type": "bool"
+ },
+ {
+ "default-value": 2,
+ "name": "loglevel",
+ "type": "uint32"
+ },
+ {
+ "default-value": 32,
+ "name": "isobsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "guest-resets-all",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "guest-reset",
+ "type": "bool"
+ },
+ {
+ "name": "bootindex",
+ "type": "int32"
+ },
+ {
+ "name": "attached",
+ "type": "bool"
+ }
+ ],
+ "id": "libvirt-32"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "vhost-user-fs-device"
+ },
+ "id": "libvirt-33"
+}
+
+{
+ "return": [
+ {
+ "default-value": true,
+ "name": "queue_reset",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-disabled-flag",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "packed",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "iommu_platform",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "event_idx",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-legacy-check",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "notify_on_empty",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "any_layout",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-started",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "indirect_desc",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "chardev",
+ "description": "ID of a chardev to use as a backend",
+ "type": "str"
+ },
+ {
+ "default-value": 128,
+ "name": "queue-size",
+ "type": "uint16"
+ },
+ {
+ "name": "tag",
+ "type": "str"
+ },
+ {
+ "default-value": 1,
+ "name": "num-request-queues",
+ "type": "uint16"
+ },
+ {
+ "name": "bootindex",
+ "type": "int32"
+ }
+ ],
+ "id": "libvirt-33"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "virtio-mem-pci"
+ },
+ "id": "libvirt-34"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "migrate-extra",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "ats",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-ignore-backend-features",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-pm-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "aer",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-flr-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnkctl-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-ats-page-aligned",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "page-per-vq",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-deverr-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "virtio-pci-bus-master-bug-migration",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "modern-pio-notify",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-pcie",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": "auto",
+ "name": "disable-legacy",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": false,
+ "name": "disable-modern",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "memaddr",
+ "type": "uint64"
+ },
+ {
+ "default-value": true,
+ "name": "indirect_desc",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "iommu_platform",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "memdev",
+ "type": "link<memory-backend>"
+ },
+ {
+ "default-value": true,
+ "name": "x-early-migration",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "event_idx",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "node",
+ "type": "uint32"
+ },
+ {
+ "name": "size",
+ "type": "size"
+ },
+ {
+ "name": "requested-size",
+ "type": "size"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-legacy-check",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "any_layout",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "queue_reset",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "notify_on_empty",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "packed",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "block-size",
+ "type": "size"
+ },
+ {
+ "default-value": false,
+ "name": "prealloc",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-started",
+ "type": "bool"
+ },
+ {
+ "default-value": "on",
+ "name": "unplugged-inaccessible",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": true,
+ "name": "use-disabled-flag",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "dynamic-memslots",
+ "type": "bool"
+ },
+ {
+ "name": "virtio-backend",
+ "type": "child<virtio-mem>"
+ }
+ ],
+ "id": "libvirt-34"
+}
+
+{
+ "execute": "device-list-properties",
+ "arguments": {
+ "typename": "virtio-iommu-pci"
+ },
+ "id": "libvirt-35"
+}
+
+{
+ "return": [
+ {
+ "name": "failover_pair_id",
+ "type": "str"
+ },
+ {
+ "name": "romfile",
+ "type": "str"
+ },
+ {
+ "default-value": -1,
+ "name": "addr",
+ "description": "Slot and optional function number, example: 06.0 or 06",
+ "type": "int32"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "romsize",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnksta-dllla",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 1,
+ "name": "rombar",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "x-pcie-ari-nextfn-1",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-err-unc-mask",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-extcap-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "acpi-index",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "multifunction",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "migrate-extra",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "ats",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-ignore-backend-features",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-pm-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "aer",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-flr-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-lnkctl-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-ats-page-aligned",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "page-per-vq",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-pcie-deverr-init",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "virtio-pci-bus-master-bug-migration",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "modern-pio-notify",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-pcie",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": "auto",
+ "name": "disable-legacy",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "default-value": false,
+ "name": "disable-modern",
+ "type": "bool"
+ },
+ {
+ "default-value": [],
+ "name": "reserved-regions",
+ "type": "list"
+ },
+ {
+ "default-value": 0,
+ "name": "class",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "indirect_desc",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "iommu_platform",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "event_idx",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-disabled-flag",
+ "type": "bool"
+ },
+ {
+ "default-value": "host",
+ "name": "granule",
+ "description": "granule_mode values, 4k, 8k, 16k, 64k, host",
+ "type": "GranuleMode"
+ },
+ {
+ "default-value": false,
+ "name": "x-disable-legacy-check",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "any_layout",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "notify_on_empty",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "queue_reset",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "boot-bypass",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "packed",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "use-started",
+ "type": "bool"
+ },
+ {
+ "name": "primary-bus",
+ "type": "link<PCI>"
+ },
+ {
+ "default-value": 64,
+ "name": "aw-bits",
+ "type": "uint8"
+ },
+ {
+ "name": "virtio-backend",
+ "type": "child<virtio-iommu-device>"
+ }
+ ],
+ "id": "libvirt-35"
+}
+
+{
+ "execute": "qom-list-properties",
+ "arguments": {
+ "typename": "memory-backend-file"
+ },
+ "id": "libvirt-36"
+}
+
+{
+ "return": [
+ {
+ "name": "type",
+ "type": "string"
+ },
+ {
+ "name": "share",
+ "description": "Mark the memory as private to QEMU or shared",
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "description": "Size of the memory region (ex: 500M)",
+ "type": "int"
+ },
+ {
+ "name": "dump",
+ "description": "Set to 'off' to exclude from core dump",
+ "type": "bool"
+ },
+ {
+ "name": "prealloc-threads",
+ "description": "Number of CPU threads to use for prealloc",
+ "type": "int"
+ },
+ {
+ "name": "x-use-canonical-path-for-ramblock-id",
+ "type": "bool"
+ },
+ {
+ "name": "policy",
+ "description": "Set the NUMA policy",
+ "type": "HostMemPolicy"
+ },
+ {
+ "name": "prealloc-context",
+ "description": "Context to use for creating CPU threads for preallocation",
+ "type": "link<thread-context>"
+ },
+ {
+ "name": "prealloc",
+ "description": "Preallocate memory",
+ "type": "bool"
+ },
+ {
+ "name": "reserve",
+ "description": "Reserve swap space (or huge pages) if applicable",
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "description": "Binds memory to the list of NUMA host nodes",
+ "type": "int"
+ },
+ {
+ "name": "merge",
+ "description": "Mark memory as mergeable",
+ "type": "bool"
+ },
+ {
+ "name": "pmem",
+ "type": "bool"
+ },
+ {
+ "name": "align",
+ "type": "int"
+ },
+ {
+ "name": "offset",
+ "description": "Offset into the target file (ex: 1G)",
+ "type": "int"
+ },
+ {
+ "name": "mem-path",
+ "type": "string"
+ },
+ {
+ "name": "rom",
+ "description": "Whether to create Read Only Memory (ROM)",
+ "type": "OnOffAuto"
+ },
+ {
+ "name": "discard-data",
+ "type": "bool"
+ },
+ {
+ "name": "readonly",
+ "type": "bool"
+ }
+ ],
+ "id": "libvirt-36"
+}
+
+{
+ "execute": "qom-list-properties",
+ "arguments": {
+ "typename": "memory-backend-memfd"
+ },
+ "id": "libvirt-37"
+}
+
+{
+ "return": [
+ {
+ "name": "type",
+ "type": "string"
+ },
+ {
+ "name": "share",
+ "description": "Mark the memory as private to QEMU or shared",
+ "type": "bool"
+ },
+ {
+ "name": "size",
+ "description": "Size of the memory region (ex: 500M)",
+ "type": "int"
+ },
+ {
+ "name": "dump",
+ "description": "Set to 'off' to exclude from core dump",
+ "type": "bool"
+ },
+ {
+ "name": "prealloc-threads",
+ "description": "Number of CPU threads to use for prealloc",
+ "type": "int"
+ },
+ {
+ "name": "x-use-canonical-path-for-ramblock-id",
+ "type": "bool"
+ },
+ {
+ "name": "policy",
+ "description": "Set the NUMA policy",
+ "type": "HostMemPolicy"
+ },
+ {
+ "name": "prealloc-context",
+ "description": "Context to use for creating CPU threads for preallocation",
+ "type": "link<thread-context>"
+ },
+ {
+ "name": "prealloc",
+ "description": "Preallocate memory",
+ "type": "bool"
+ },
+ {
+ "name": "reserve",
+ "description": "Reserve swap space (or huge pages) if applicable",
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "description": "Binds memory to the list of NUMA host nodes",
+ "type": "int"
+ },
+ {
+ "name": "merge",
+ "description": "Mark memory as mergeable",
+ "type": "bool"
+ },
+ {
+ "name": "hugetlb",
+ "description": "Use huge pages",
+ "type": "bool"
+ },
+ {
+ "name": "seal",
+ "description": "Seal growing & shrinking",
+ "type": "bool"
+ },
+ {
+ "name": "hugetlbsize",
+ "description": "Huge pages size (ex: 2M, 1G)",
+ "type": "int"
+ }
+ ],
+ "id": "libvirt-37"
+}
+
+{
+ "execute": "qom-list-properties",
+ "arguments": {
+ "typename": "max-x86_64-cpu"
+ },
+ "id": "libvirt-38"
+}
+
+{
+ "return": [
+ {
+ "name": "type",
+ "type": "string"
+ },
+ {
+ "name": "parent_bus",
+ "type": "link<bus>"
+ },
+ {
+ "name": "realized",
+ "type": "bool"
+ },
+ {
+ "name": "hotplugged",
+ "type": "bool"
+ },
+ {
+ "name": "hotpluggable",
+ "type": "bool"
+ },
+ {
+ "name": "memory",
+ "type": "link<memory-region>"
+ },
+ {
+ "name": "legacy-memory",
+ "type": "str"
+ },
+ {
+ "name": "start-powered-off",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-invept-single-context",
+ "type": "bool"
+ },
+ {
+ "name": "core-capability",
+ "type": "bool"
+ },
+ {
+ "name": "popcnt",
+ "type": "bool"
+ },
+ {
+ "name": "sgx-debug",
+ "type": "bool"
+ },
+ {
+ "name": "kvm-poll-control",
+ "type": "bool"
+ },
+ {
+ "name": "dtes64",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-invvpid-single-addr",
+ "type": "bool"
+ },
+ {
+ "name": "xstore",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "min-xlevel2",
+ "type": "uint32"
+ },
+ {
+ "name": "stepping",
+ "type": "int"
+ },
+ {
+ "name": "vmx-vmfunc",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-emsr-bitmap",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "pse36",
+ "type": "bool"
+ },
+ {
+ "name": "avx512-4vnniw",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-intel-pt-auto-level",
+ "type": "bool"
+ },
+ {
+ "name": "fma4",
+ "type": "bool"
+ },
+ {
+ "name": "avx512-vp2intersect",
+ "type": "bool"
+ },
+ {
+ "name": "avx2",
+ "type": "bool"
+ },
+ {
+ "name": "amd-psfd",
+ "type": "bool"
+ },
+ {
+ "name": "amd-stibp",
+ "type": "bool"
+ },
+ {
+ "name": "sgxlc",
+ "type": "bool"
+ },
+ {
+ "name": "sgx-tokenkey",
+ "type": "bool"
+ },
+ {
+ "name": "family",
+ "type": "int"
+ },
+ {
+ "default-value": true,
+ "name": "vmware-cpuid-freq",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-store-lma",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "hv-spinlocks",
+ "type": "uint32"
+ },
+ {
+ "name": "vmx-entry-noload-debugctl",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-ept-advanced-exitinfo",
+ "type": "bool"
+ },
+ {
+ "name": "amx-fp16",
+ "type": "bool"
+ },
+ {
+ "name": "erms",
+ "type": "bool"
+ },
+ {
+ "name": "vaes",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-eptad",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-activity-wait-sipi",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-flexpriority",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-reset",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "rdrand",
+ "type": "bool"
+ },
+ {
+ "name": "lam",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-pause-exit",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-shadow-vmcs",
+ "type": "bool"
+ },
+ {
+ "name": "model",
+ "type": "int"
+ },
+ {
+ "name": "avx512-vpopcntdq",
+ "type": "bool"
+ },
+ {
+ "name": "xcrypt",
+ "type": "bool"
+ },
+ {
+ "name": "tbm",
+ "type": "bool"
+ },
+ {
+ "name": "movdiri",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-monitor-exit",
+ "type": "bool"
+ },
+ {
+ "name": "kvm-pv-eoi",
+ "type": "bool"
+ },
+ {
+ "name": "lm",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "hv-version-id-spack",
+ "type": "uint32"
+ },
+ {
+ "default-value": true,
+ "name": "x-vendor-cpuid-only",
+ "type": "bool"
+ },
+ {
+ "name": "pbrsb-no",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-unrestricted-guest",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "host-phys-bits-limit",
+ "type": "uint8"
+ },
+ {
+ "name": "pae",
+ "type": "bool"
+ },
+ {
+ "name": "ssse3",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-runtime",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "phe",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "guest-phys-bits",
+ "type": "uint32"
+ },
+ {
+ "default-value": false,
+ "name": "host-phys-bits",
+ "type": "bool"
+ },
+ {
+ "name": "taa-no",
+ "type": "bool"
+ },
+ {
+ "name": "sgx-aex-notify",
+ "type": "bool"
+ },
+ {
+ "name": "full-width-write",
+ "type": "bool"
+ },
+ {
+ "name": "arat",
+ "type": "bool"
+ },
+ {
+ "name": "avx512vbmi2",
+ "type": "bool"
+ },
+ {
+ "name": "arch-lbr",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-vnmi-pending",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-any-errcode",
+ "type": "bool"
+ },
+ {
+ "name": "x2apic",
+ "type": "bool"
+ },
+ {
+ "name": "npt",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-invpcid-exit",
+ "type": "bool"
+ },
+ {
+ "name": "avx512ifma",
+ "type": "bool"
+ },
+ {
+ "name": "model-id",
+ "type": "string"
+ },
+ {
+ "default-value": 0,
+ "name": "ucode-rev",
+ "type": "uint64"
+ },
+ {
+ "default-value": false,
+ "name": "hv-evmcs",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "pmm-en",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-io-exit",
+ "type": "bool"
+ },
+ {
+ "name": "tsc",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-force-features",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-ins-outs",
+ "type": "bool"
+ },
+ {
+ "name": "dca",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-apicv-x2apic",
+ "type": "bool"
+ },
+ {
+ "name": "ia64",
+ "type": "bool"
+ },
+ {
+ "name": "perfctr-core",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-stimer-direct",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "gds-no",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-cr3-load-noexit",
+ "type": "bool"
+ },
+ {
+ "name": "rfds-no",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "pmu",
+ "type": "bool"
+ },
+ {
+ "name": "kvmclock",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "xen-vapic",
+ "type": "bool"
+ },
+ {
+ "name": "md-clear",
+ "type": "bool"
+ },
+ {
+ "name": "invtsc",
+ "type": "bool"
+ },
+ {
+ "name": "pn",
+ "type": "bool"
+ },
+ {
+ "name": "avx512cd",
+ "type": "bool"
+ },
+ {
+ "name": "cmp-legacy",
+ "type": "bool"
+ },
+ {
+ "name": "cx16",
+ "type": "bool"
+ },
+ {
+ "name": "avx512dq",
+ "type": "bool"
+ },
+ {
+ "name": "abm",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-activity-shutdown",
+ "type": "bool"
+ },
+ {
+ "name": "auto-ibrs",
+ "type": "bool"
+ },
+ {
+ "name": "kvm-pv-ipi",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-apicv-register",
+ "type": "bool"
+ },
+ {
+ "name": "fxsr-opt",
+ "type": "bool"
+ },
+ {
+ "name": "skip-l1dfl-vmentry",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "fill-mtrr-mask",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-migrate-smi-count",
+ "type": "bool"
+ },
+ {
+ "name": "wbnoinvd",
+ "type": "bool"
+ },
+ {
+ "name": "rdpid",
+ "type": "bool"
+ },
+ {
+ "name": "pcid",
+ "type": "bool"
+ },
+ {
+ "name": "syscall",
+ "type": "bool"
+ },
+ {
+ "name": "pse",
+ "type": "bool"
+ },
+ {
+ "name": "xsaves",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-entry-load-pat",
+ "type": "bool"
+ },
+ {
+ "name": "vgif",
+ "type": "bool"
+ },
+ {
+ "name": "mce",
+ "type": "bool"
+ },
+ {
+ "name": "xfd",
+ "type": "bool"
+ },
+ {
+ "default-value": -1,
+ "name": "node-id",
+ "type": "int32"
+ },
+ {
+ "name": "avx-ne-convert",
+ "type": "bool"
+ },
+ {
+ "name": "ibpb",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-entry-load-rtit-ctl",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-apicv-xapic",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-hlt-exit",
+ "type": "bool"
+ },
+ {
+ "name": "cldemote",
+ "type": "bool"
+ },
+ {
+ "name": "lwp",
+ "type": "bool"
+ },
+ {
+ "name": "rtm",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-tlbflush",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "kvm-steal-time",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "cpuid-0xb",
+ "type": "bool"
+ },
+ {
+ "name": "fsrs",
+ "type": "bool"
+ },
+ {
+ "name": "sgx-provisionkey",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-desc-exit",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-eptp-switching",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-invlpg-exit",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-entry-load-efer",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "level-func7",
+ "type": "uint32"
+ },
+ {
+ "default-value": -1,
+ "name": "die-id",
+ "type": "int32"
+ },
+ {
+ "name": "vmx-exit-save-efer",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "x-l1-cache-per-thread",
+ "type": "bool"
+ },
+ {
+ "name": "vme",
+ "type": "bool"
+ },
+ {
+ "name": "kvm-pv-unhalt",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "kvm-no-smi-migration",
+ "type": "bool"
+ },
+ {
+ "name": "sgx-kss",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-invvpid",
+ "type": "bool"
+ },
+ {
+ "name": "svm",
+ "type": "bool"
+ },
+ {
+ "name": "kvm-hint-dedicated",
+ "type": "bool"
+ },
+ {
+ "name": "avx-ifma",
+ "type": "bool"
+ },
+ {
+ "default-value": -1,
+ "name": "module-id",
+ "type": "int32"
+ },
+ {
+ "name": "mca",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-tsc-scaling",
+ "type": "bool"
+ },
+ {
+ "name": "mtrr",
+ "type": "bool"
+ },
+ {
+ "name": "cid",
+ "type": "bool"
+ },
+ {
+ "name": "pfthreshold",
+ "type": "bool"
+ },
+ {
+ "name": "pmm",
+ "type": "bool"
+ },
+ {
+ "name": "lahf-lm",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-entry-ia32e-mode",
+ "type": "bool"
+ },
+ {
+ "default-value": 14393,
+ "name": "hv-version-id-build",
+ "type": "uint32"
+ },
+ {
+ "name": "vmx-entry-load-pkrs",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "tcg-cpuid",
+ "type": "bool"
+ },
+ {
+ "name": "no-nested-data-bp",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "legacy-multi-node",
+ "type": "bool"
+ },
+ {
+ "default-value": -1,
+ "name": "x-hv-max-vps",
+ "type": "int32"
+ },
+ {
+ "name": "tm",
+ "type": "bool"
+ },
+ {
+ "name": "pbe",
+ "type": "bool"
+ },
+ {
+ "name": "amx-int8",
+ "type": "bool"
+ },
+ {
+ "name": "sgx1",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-rdpmc-exit",
+ "type": "bool"
+ },
+ {
+ "name": "split-lock-detect",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "apic-id",
+ "type": "uint32"
+ },
+ {
+ "name": "fpu",
+ "type": "bool"
+ },
+ {
+ "name": "skinit",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "l3-cache",
+ "type": "bool"
+ },
+ {
+ "name": "sep",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-exit-load-pat",
+ "type": "bool"
+ },
+ {
+ "name": "intel-pt-lip",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-tlbflush-direct",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "avx512-bf16",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-invept-single-context-noglobals",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-rdtscp-exit",
+ "type": "bool"
+ },
+ {
+ "name": "nx",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-invvpid-all-context",
+ "type": "bool"
+ },
+ {
+ "name": "avx-vnni-int8",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-page-walk-4",
+ "type": "bool"
+ },
+ {
+ "name": "rfds-clear",
+ "type": "bool"
+ },
+ {
+ "name": "pause-filter",
+ "type": "bool"
+ },
+ {
+ "name": "ds-cpl",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-ept-execonly",
+ "type": "bool"
+ },
+ {
+ "name": "fsrm",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-exit-load-efer",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-mtf",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-vmwrite-vmexit-fields",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-ept",
+ "type": "bool"
+ },
+ {
+ "name": "fb-clear",
+ "type": "bool"
+ },
+ {
+ "name": "nodeid-msr",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-exit-clear-bndcfgs",
+ "type": "bool"
+ },
+ {
+ "name": "smap",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-io-bitmap",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-preemption-timer",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-invept-all-context",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-intr-exit",
+ "type": "bool"
+ },
+ {
+ "name": "prefetchiti",
+ "type": "bool"
+ },
+ {
+ "name": "psdp-no",
+ "type": "bool"
+ },
+ {
+ "name": "cr8legacy",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "xlevel",
+ "type": "uint32"
+ },
+ {
+ "name": "vmx-vpid",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-zero-len-inject",
+ "type": "bool"
+ },
+ {
+ "name": "pschange-mc-no",
+ "type": "bool"
+ },
+ {
+ "name": "virt-ssbd",
+ "type": "bool"
+ },
+ {
+ "name": "umip",
+ "type": "bool"
+ },
+ {
+ "name": "avx512er",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-vintr-pending",
+ "type": "bool"
+ },
+ {
+ "name": "xstore-en",
+ "type": "bool"
+ },
+ {
+ "name": "avx512vl",
+ "type": "bool"
+ },
+ {
+ "name": "ibrs",
+ "type": "bool"
+ },
+ {
+ "name": "rsba",
+ "type": "bool"
+ },
+ {
+ "name": "cmov",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-posted-intr",
+ "type": "bool"
+ },
+ {
+ "name": "xcrypt-en",
+ "type": "bool"
+ },
+ {
+ "name": "tm2",
+ "type": "bool"
+ },
+ {
+ "name": "lbrv",
+ "type": "bool"
+ },
+ {
+ "name": "tsc-scale",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-secondary-ctls",
+ "type": "bool"
+ },
+ {
+ "name": "xsaveerptr",
+ "type": "bool"
+ },
+ {
+ "name": "fsgsbase",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "x-hv-synic-kvm-only",
+ "type": "bool"
+ },
+ {
+ "name": "avx512bw",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "hv-version-id-minor",
+ "type": "uint16"
+ },
+ {
+ "name": "tce",
+ "type": "bool"
+ },
+ {
+ "name": "tsc-frequency",
+ "type": "int"
+ },
+ {
+ "name": "smx",
+ "type": "bool"
+ },
+ {
+ "name": "hle",
+ "type": "bool"
+ },
+ {
+ "name": "monitor",
+ "type": "bool"
+ },
+ {
+ "name": "avx512-fp16",
+ "type": "bool"
+ },
+ {
+ "name": "sse4a",
+ "type": "bool"
+ },
+ {
+ "name": "vpclmulqdq",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-frequencies",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "kvm-pv-tlb-flush",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-rdtsc-exit",
+ "type": "bool"
+ },
+ {
+ "name": "sgx-edeccssa",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-activity-hlt",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-cr8-load-exit",
+ "type": "bool"
+ },
+ {
+ "name": "mds-no",
+ "type": "bool"
+ },
+ {
+ "name": "svme-addr-chk",
+ "type": "bool"
+ },
+ {
+ "name": "amd-no-ssb",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-exit-load-pkrs",
+ "type": "bool"
+ },
+ {
+ "name": "adx",
+ "type": "bool"
+ },
+ {
+ "name": "xsavec",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "hv-version-id-sbranch",
+ "type": "uint8"
+ },
+ {
+ "default-value": 0,
+ "name": "min-level",
+ "type": "uint32"
+ },
+ {
+ "name": "crash-information",
+ "type": "GuestPanicInformation"
+ },
+ {
+ "default-value": true,
+ "name": "full-cpuid-auto-level",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-entry-load-bndcfgs",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-vnmi",
+ "type": "bool"
+ },
+ {
+ "name": "pclmulqdq",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-stimer",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "msr",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "kvm-pv-enforce-cpuid",
+ "type": "bool"
+ },
+ {
+ "name": "ssb-no",
+ "type": "bool"
+ },
+ {
+ "name": "clflush",
+ "type": "bool"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "xlevel2",
+ "type": "uint32"
+ },
+ {
+ "name": "mpx",
+ "type": "bool"
+ },
+ {
+ "name": "extapic",
+ "type": "bool"
+ },
+ {
+ "name": "lfence-always-serializing",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-enforce-cpuid",
+ "type": "bool"
+ },
+ {
+ "name": "xop",
+ "type": "bool"
+ },
+ {
+ "name": "sgx2",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-rdseed-exit",
+ "type": "bool"
+ },
+ {
+ "name": "smep",
+ "type": "bool"
+ },
+ {
+ "name": "vnmi",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-mwait-exit",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-synic",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "cx8",
+ "type": "bool"
+ },
+ {
+ "name": "amx-complex",
+ "type": "bool"
+ },
+ {
+ "name": "pku",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "kvm",
+ "type": "bool"
+ },
+ {
+ "name": "kvm-asyncpf-vmexit",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-passthrough",
+ "type": "bool"
+ },
+ {
+ "name": "vmcb-clean",
+ "type": "bool"
+ },
+ {
+ "name": "tsx-ldtrk",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-tlbflush-ext",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "stibp",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-cr3-store-noexit",
+ "type": "bool"
+ },
+ {
+ "name": "tsx-ctrl",
+ "type": "bool"
+ },
+ {
+ "name": "svm-lock",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-reenlightenment",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "clzero",
+ "type": "bool"
+ },
+ {
+ "name": "avic",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-vpindex",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "ds",
+ "type": "bool"
+ },
+ {
+ "name": "sgx-exinfo",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "legacy-cache",
+ "type": "bool"
+ },
+ {
+ "name": "sse",
+ "type": "bool"
+ },
+ {
+ "name": "fsrc",
+ "type": "bool"
+ },
+ {
+ "name": "osvw",
+ "type": "bool"
+ },
+ {
+ "name": "pks",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-ept-2mb",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-true-ctls",
+ "type": "bool"
+ },
+ {
+ "name": "movdir64b",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-invept",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-rdrand-exit",
+ "type": "bool"
+ },
+ {
+ "name": "acpi",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-encls-exit",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-cr8-store-exit",
+ "type": "bool"
+ },
+ {
+ "name": "sbdr-ssdp-no",
+ "type": "bool"
+ },
+ {
+ "name": "kvm-mmu",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-ept-1gb",
+ "type": "bool"
+ },
+ {
+ "name": "nrip-save",
+ "type": "bool"
+ },
+ {
+ "name": "gfni",
+ "type": "bool"
+ },
+ {
+ "name": "flush-l1d",
+ "type": "bool"
+ },
+ {
+ "name": "kvm-msi-ext-dest-id",
+ "type": "bool"
+ },
+ {
+ "name": "fzrm",
+ "type": "bool"
+ },
+ {
+ "name": "serialize",
+ "type": "bool"
+ },
+ {
+ "name": "avx512bitalg",
+ "type": "bool"
+ },
+ {
+ "name": "rdseed",
+ "type": "bool"
+ },
+ {
+ "name": "sha-ni",
+ "type": "bool"
+ },
+ {
+ "name": "ace2",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "lmce",
+ "type": "bool"
+ },
+ {
+ "name": "waitpkg",
+ "type": "bool"
+ },
+ {
+ "name": "topoext",
+ "type": "bool"
+ },
+ {
+ "name": "f16c",
+ "type": "bool"
+ },
+ {
+ "name": "3dnowprefetch",
+ "type": "bool"
+ },
+ {
+ "name": "avx512-4fmaps",
+ "type": "bool"
+ },
+ {
+ "name": "fbsdp-no",
+ "type": "bool"
+ },
+ {
+ "name": "avx",
+ "type": "bool"
+ },
+ {
+ "name": "sse2",
+ "type": "bool"
+ },
+ {
+ "name": "rdctl-no",
+ "type": "bool"
+ },
+ {
+ "name": "mmx",
+ "type": "bool"
+ },
+ {
+ "default-value": 10,
+ "name": "hv-version-id-major",
+ "type": "uint16"
+ },
+ {
+ "default-value": 4294967295,
+ "name": "level",
+ "type": "uint32"
+ },
+ {
+ "name": "avx512vnni",
+ "type": "bool"
+ },
+ {
+ "name": "pni",
+ "type": "bool"
+ },
+ {
+ "name": "movbe",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-ple",
+ "type": "bool"
+ },
+ {
+ "name": "mmxext",
+ "type": "bool"
+ },
+ {
+ "name": "lbr-fmt",
+ "type": "uint64"
+ },
+ {
+ "name": "bus-lock-detect",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-apicv-vid",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-page-walk-5",
+ "type": "bool"
+ },
+ {
+ "name": "flushbyasid",
+ "type": "bool"
+ },
+ {
+ "name": "rdtscp",
+ "type": "bool"
+ },
+ {
+ "name": "clwb",
+ "type": "bool"
+ },
+ {
+ "name": "kvm-pv-sched-yield",
+ "type": "bool"
+ },
+ {
+ "name": "kvm-asyncpf",
+ "type": "bool"
+ },
+ {
+ "name": "decodeassists",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-wbinvd-exit",
+ "type": "bool"
+ },
+ {
+ "name": "pat",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-exit-clear-rtit-ctl",
+ "type": "bool"
+ },
+ {
+ "name": "invpcid",
+ "type": "bool"
+ },
+ {
+ "name": "pdpe1gb",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-exit-save-pat",
+ "type": "bool"
+ },
+ {
+ "name": "unavailable-features",
+ "type": "strList"
+ },
+ {
+ "name": "tsc-adjust",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-enable-user-wait-pause",
+ "type": "bool"
+ },
+ {
+ "name": "ht",
+ "type": "bool"
+ },
+ {
+ "name": "amx-tile",
+ "type": "bool"
+ },
+ {
+ "name": "clflushopt",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-xmm-input",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-tsc-offset",
+ "type": "bool"
+ },
+ {
+ "name": "ssbd",
+ "type": "bool"
+ },
+ {
+ "name": "3dnowext",
+ "type": "bool"
+ },
+ {
+ "name": "xtpr",
+ "type": "bool"
+ },
+ {
+ "name": "sgx",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-crash",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "xsave",
+ "type": "bool"
+ },
+ {
+ "name": "pdcm",
+ "type": "bool"
+ },
+ {
+ "name": "hv-vendor-id",
+ "type": "str"
+ },
+ {
+ "name": "est",
+ "type": "bool"
+ },
+ {
+ "name": "vendor",
+ "type": "string"
+ },
+ {
+ "name": "pge",
+ "type": "bool"
+ },
+ {
+ "name": "pcommit",
+ "type": "bool"
+ },
+ {
+ "name": "ibs",
+ "type": "bool"
+ },
+ {
+ "name": "tsc-deadline",
+ "type": "bool"
+ },
+ {
+ "name": "sgx-mode64",
+ "type": "bool"
+ },
+ {
+ "name": "kvmclock-stable-bit",
+ "type": "bool"
+ },
+ {
+ "name": "misalignsse",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-msr-bitmap",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "check",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-time",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "perfctr-nb",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-avic",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "phys-bits",
+ "type": "uint32"
+ },
+ {
+ "name": "apic",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-exit-save-preemption-timer",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-exit-ack-intr",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-nmi-exit",
+ "type": "bool"
+ },
+ {
+ "name": "avx512vbmi",
+ "type": "bool"
+ },
+ {
+ "default-value": -1,
+ "name": "thread-id",
+ "type": "int32"
+ },
+ {
+ "default-value": 0,
+ "name": "min-xlevel",
+ "type": "uint32"
+ },
+ {
+ "default-value": -1,
+ "name": "socket-id",
+ "type": "int32"
+ },
+ {
+ "name": "vmx-exit-nosave-debugctl",
+ "type": "bool"
+ },
+ {
+ "name": "avx512f",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-xsaves",
+ "type": "bool"
+ },
+ {
+ "name": "arch-capabilities",
+ "type": "bool"
+ },
+ {
+ "name": "bmi2",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-exit-load-perf-global-ctrl",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-pml",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-entry-load-perf-global-ctrl",
+ "type": "bool"
+ },
+ {
+ "name": "ace2-en",
+ "type": "bool"
+ },
+ {
+ "name": "intel-pt",
+ "type": "bool"
+ },
+ {
+ "name": "wdt",
+ "type": "bool"
+ },
+ {
+ "name": "kvm-nopiodelay",
+ "type": "bool"
+ },
+ {
+ "name": "cmpccxadd",
+ "type": "bool"
+ },
+ {
+ "name": "v-vmsave-vmload",
+ "type": "bool"
+ },
+ {
+ "name": "avx512pf",
+ "type": "bool"
+ },
+ {
+ "name": "bmi1",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "enforce",
+ "type": "bool"
+ },
+ {
+ "name": "sse4.2",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-syndbg",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "ibrs-all",
+ "type": "bool"
+ },
+ {
+ "name": "xgetbv1",
+ "type": "bool"
+ },
+ {
+ "name": "mcdt-no",
+ "type": "bool"
+ },
+ {
+ "name": "spec-ctrl",
+ "type": "bool"
+ },
+ {
+ "name": "3dnow",
+ "type": "bool"
+ },
+ {
+ "name": "kvm-asyncpf-int",
+ "type": "bool"
+ },
+ {
+ "name": "vmx",
+ "type": "bool"
+ },
+ {
+ "name": "la57",
+ "type": "bool"
+ },
+ {
+ "default-value": "off",
+ "name": "hv-no-nonarch-coresharing",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "name": "amx-bf16",
+ "type": "bool"
+ },
+ {
+ "name": "sse4.1",
+ "type": "bool"
+ },
+ {
+ "name": "xsaveopt",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-relaxed",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": 0,
+ "name": "hv-version-id-snumber",
+ "type": "uint32"
+ },
+ {
+ "name": "stibp-always-on",
+ "type": "bool"
+ },
+ {
+ "name": "amd-ssbd",
+ "type": "bool"
+ },
+ {
+ "name": "avx-vnni",
+ "type": "bool"
+ },
+ {
+ "name": "fxsr",
+ "type": "bool"
+ },
+ {
+ "name": "phe-en",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-vapic",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-ipi",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "null-sel-clr-base",
+ "type": "bool"
+ },
+ {
+ "name": "hypervisor",
+ "type": "bool"
+ },
+ {
+ "name": "aes",
+ "type": "bool"
+ },
+ {
+ "name": "de",
+ "type": "bool"
+ },
+ {
+ "default-value": -1,
+ "name": "core-id",
+ "type": "int32"
+ },
+ {
+ "name": "ss",
+ "type": "bool"
+ },
+ {
+ "name": "vmx-movdr-exit",
+ "type": "bool"
+ },
+ {
+ "name": "fma",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "host-cache-info",
+ "type": "bool"
+ },
+ {
+ "default-value": true,
+ "name": "migratable",
+ "type": "bool"
+ },
+ {
+ "name": "lahf_lm",
+ "type": "bool"
+ },
+ {
+ "name": "tsc_adjust",
+ "type": "bool"
+ },
+ {
+ "name": "svm_lock",
+ "type": "bool"
+ },
+ {
+ "name": "vmcb_clean",
+ "type": "bool"
+ },
+ {
+ "name": "nrip_save",
+ "type": "bool"
+ },
+ {
+ "name": "lbr_fmt",
+ "type": "uint64"
+ },
+ {
+ "name": "pclmuldq",
+ "type": "bool"
+ },
+ {
+ "name": "ffxsr",
+ "type": "bool"
+ },
+ {
+ "name": "sse4-2",
+ "type": "bool"
+ },
+ {
+ "name": "kvm_asyncpf_int",
+ "type": "bool"
+ },
+ {
+ "name": "cmp_legacy",
+ "type": "bool"
+ },
+ {
+ "name": "kvm_nopiodelay",
+ "type": "bool"
+ },
+ {
+ "name": "perfctr_core",
+ "type": "bool"
+ },
+ {
+ "name": "kvm_pv_unhalt",
+ "type": "bool"
+ },
+ {
+ "name": "ds_cpl",
+ "type": "bool"
+ },
+ {
+ "name": "sse4-1",
+ "type": "bool"
+ },
+ {
+ "name": "perfctr_nb",
+ "type": "bool"
+ },
+ {
+ "name": "sse3",
+ "type": "bool"
+ },
+ {
+ "name": "tsc_scale",
+ "type": "bool"
+ },
+ {
+ "name": "pause_filter",
+ "type": "bool"
+ },
+ {
+ "name": "kvm_asyncpf",
+ "type": "bool"
+ },
+ {
+ "name": "kvm_steal_time",
+ "type": "bool"
+ },
+ {
+ "name": "feature-words",
+ "type": "X86CPUFeatureWordInfo"
+ },
+ {
+ "name": "kvm_mmu",
+ "type": "bool"
+ },
+ {
+ "name": "filtered-features",
+ "type": "X86CPUFeatureWordInfo"
+ },
+ {
+ "name": "sse4_2",
+ "type": "bool"
+ },
+ {
+ "name": "kvm_poll_control",
+ "type": "bool"
+ },
+ {
+ "name": "fxsr_opt",
+ "type": "bool"
+ },
+ {
+ "name": "nodeid_msr",
+ "type": "bool"
+ },
+ {
+ "name": "kvm_pv_eoi",
+ "type": "bool"
+ },
+ {
+ "name": "i64",
+ "type": "bool"
+ },
+ {
+ "default-value": false,
+ "name": "hv-apicv",
+ "description": "on/off",
+ "type": "bool"
+ },
+ {
+ "name": "xd",
+ "type": "bool"
+ },
+ {
+ "name": "sse4_1",
+ "type": "bool"
+ }
+ ],
+ "id": "libvirt-38"
+}
+
+{
+ "execute": "query-machines",
+ "id": "libvirt-39"
+}
+
+{
+ "return": [
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-5.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.12",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.0",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": true,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-6.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-4.2",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.5",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-4.2",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-5.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.7",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-9.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 4096,
+ "deprecated": false,
+ "default-ram-id": "pc.ram",
+ "alias": "q35"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-7.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.2",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": true,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-8.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 1024,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": false,
+ "name": "none",
+ "numa-mem-supported": false,
+ "acpi": false,
+ "cpu-max": 1,
+ "deprecated": false,
+ "default-ram-id": "ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-8.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.7",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-6.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-9.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "is-default": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram",
+ "alias": "pc"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.4",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-7.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.10",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": false,
+ "name": "x-remote",
+ "numa-mem-supported": false,
+ "acpi": false,
+ "cpu-max": 1,
+ "deprecated": false
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-5.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.9",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.11",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-3.1",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-6.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-4.1",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.4",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-4.1",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-5.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.9",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "isapc",
+ "numa-mem-supported": false,
+ "default-cpu-type": "486-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 1,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.6",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-3.1",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-9.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 4096,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.12",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-7.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.1",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": true,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-8.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-8.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-6.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.6",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-9.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-4.0.1",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-7.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-5.0",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.8",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.10",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-3.0",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-7.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-4.0",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-6.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": false,
+ "name": "microvm",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "microvm.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.3",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": true,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-8.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 1024,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-4.0",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-8.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-5.0",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.8",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-6.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-3.0",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.5",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-7.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.11",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ }
+ ],
+ "id": "libvirt-39"
+}
+
+{
+ "execute": "qom-list-properties",
+ "arguments": {
+ "typename": "none-machine"
+ },
+ "id": "libvirt-40"
+}
+
+{
+ "return": [
+ {
+ "name": "type",
+ "type": "string"
+ },
+ {
+ "name": "kernel",
+ "description": "Linux kernel image file",
+ "type": "string"
+ },
+ {
+ "name": "dt-compatible",
+ "description": "Overrides the \"compatible\" property of the dt root node",
+ "type": "string"
+ },
+ {
+ "name": "boot",
+ "description": "Boot configuration",
+ "type": "BootConfiguration"
+ },
+ {
+ "name": "memory",
+ "description": "Memory size configuration",
+ "type": "MemorySizeConfiguration"
+ },
+ {
+ "name": "initrd",
+ "description": "Linux initial ramdisk file",
+ "type": "string"
+ },
+ {
+ "name": "confidential-guest-support",
+ "description": "Set confidential guest scheme to support",
+ "type": "link<confidential-guest-support>"
+ },
+ {
+ "name": "graphics",
+ "description": "Set on/off to enable/disable graphics emulation",
+ "type": "bool"
+ },
+ {
+ "name": "usb",
+ "description": "Set on/off to enable/disable usb",
+ "type": "bool"
+ },
+ {
+ "name": "firmware",
+ "description": "Firmware image",
+ "type": "string"
+ },
+ {
+ "name": "memory-encryption",
+ "description": "Set memory encryption object to use",
+ "type": "string"
+ },
+ {
+ "name": "smp",
+ "description": "CPU topology",
+ "type": "SMPConfiguration"
+ },
+ {
+ "name": "dump-guest-core",
+ "description": "Include guest memory in a core dump",
+ "type": "bool"
+ },
+ {
+ "name": "phandle-start",
+ "description": "The first phandle ID we may generate dynamically",
+ "type": "int"
+ },
+ {
+ "name": "dumpdtb",
+ "description": "Dump current dtb to a file and quit",
+ "type": "string"
+ },
+ {
+ "name": "memory-backend",
+ "description": "Set RAM backendValid value is ID of hostmem based backend",
+ "type": "link<memory-backend>"
+ },
+ {
+ "name": "dtb",
+ "description": "Linux kernel device tree file",
+ "type": "string"
+ },
+ {
+ "name": "mem-merge",
+ "description": "Enable/disable memory merge support",
+ "type": "bool"
+ },
+ {
+ "name": "append",
+ "description": "Linux kernel command line",
+ "type": "string"
+ },
+ {
+ "name": "suppress-vmdesc",
+ "description": "Set on to disable self-describing migration",
+ "type": "bool"
+ },
+ {
+ "name": "peripheral-anon",
+ "type": "child<container>"
+ },
+ {
+ "name": "peripheral",
+ "type": "child<container>"
+ }
+ ],
+ "id": "libvirt-40"
+}
+
+{
+ "execute": "query-cpu-definitions",
+ "id": "libvirt-41"
+}
+
+{
+ "return": [
+ {
+ "name": "max",
+ "typename": "max-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": false,
+ "deprecated": false
+ },
+ {
+ "name": "host",
+ "typename": "host-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": false,
+ "deprecated": false
+ },
+ {
+ "name": "base",
+ "typename": "base-x86_64-cpu",
+ "unavailable-features": [],
+ "static": true,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "qemu64-v1",
+ "typename": "qemu64-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "qemu64",
+ "typename": "qemu64-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "qemu64-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "qemu32-v1",
+ "typename": "qemu32-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "qemu32",
+ "typename": "qemu32-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "qemu32-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "phenom-v1",
+ "typename": "phenom-v1-x86_64-cpu",
+ "unavailable-features": [
+ "3dnowext",
+ "3dnow"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "phenom",
+ "typename": "phenom-x86_64-cpu",
+ "unavailable-features": [
+ "3dnowext",
+ "3dnow"
+ ],
+ "alias-of": "phenom-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "pentium3-v1",
+ "typename": "pentium3-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "pentium3",
+ "typename": "pentium3-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "pentium3-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "pentium2-v1",
+ "typename": "pentium2-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "pentium2",
+ "typename": "pentium2-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "pentium2-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "pentium-v1",
+ "typename": "pentium-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "pentium",
+ "typename": "pentium-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "pentium-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "n270-v1",
+ "typename": "n270-v1-x86_64-cpu",
+ "unavailable-features": [
+ "ss"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "n270",
+ "typename": "n270-x86_64-cpu",
+ "unavailable-features": [
+ "ss"
+ ],
+ "alias-of": "n270-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "kvm64-v1",
+ "typename": "kvm64-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "kvm64",
+ "typename": "kvm64-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "kvm64-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "kvm32-v1",
+ "typename": "kvm32-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "kvm32",
+ "typename": "kvm32-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "kvm32-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "coreduo-v1",
+ "typename": "coreduo-v1-x86_64-cpu",
+ "unavailable-features": [
+ "ss"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "coreduo",
+ "typename": "coreduo-x86_64-cpu",
+ "unavailable-features": [
+ "ss"
+ ],
+ "alias-of": "coreduo-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "core2duo-v1",
+ "typename": "core2duo-v1-x86_64-cpu",
+ "unavailable-features": [
+ "ss"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "core2duo",
+ "typename": "core2duo-x86_64-cpu",
+ "unavailable-features": [
+ "ss"
+ ],
+ "alias-of": "core2duo-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "athlon-v1",
+ "typename": "athlon-v1-x86_64-cpu",
+ "unavailable-features": [
+ "3dnowext",
+ "3dnow"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "athlon",
+ "typename": "athlon-x86_64-cpu",
+ "unavailable-features": [
+ "3dnowext",
+ "3dnow"
+ ],
+ "alias-of": "athlon-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Westmere-v2",
+ "typename": "Westmere-v2-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Westmere-v1",
+ "typename": "Westmere-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Westmere-IBRS",
+ "typename": "Westmere-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "alias-of": "Westmere-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Westmere",
+ "typename": "Westmere-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Westmere-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Snowridge-v4",
+ "typename": "Snowridge-v4-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Snowridge-v3",
+ "typename": "Snowridge-v3-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "core-capability",
+ "xsaves",
+ "split-lock-detect"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Snowridge-v2",
+ "typename": "Snowridge-v2-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "core-capability",
+ "split-lock-detect"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Snowridge-v1",
+ "typename": "Snowridge-v1-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "mpx",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "core-capability",
+ "mpx",
+ "mpx",
+ "split-lock-detect"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Snowridge",
+ "typename": "Snowridge-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "mpx",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "core-capability",
+ "mpx",
+ "mpx",
+ "split-lock-detect"
+ ],
+ "alias-of": "Snowridge-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server-v5",
+ "typename": "Skylake-Server-v5-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "spec-ctrl",
+ "xsaves",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server-v4",
+ "typename": "Skylake-Server-v4-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server-v3",
+ "typename": "Skylake-Server-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server-v2",
+ "typename": "Skylake-Server-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server-v1",
+ "typename": "Skylake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server-noTSX-IBRS",
+ "typename": "Skylake-Server-noTSX-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "alias-of": "Skylake-Server-v3",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server-IBRS",
+ "typename": "Skylake-Server-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "alias-of": "Skylake-Server-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server",
+ "typename": "Skylake-Server-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "alias-of": "Skylake-Server-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Client-v4",
+ "typename": "Skylake-Client-v4-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "spec-ctrl",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Client-v3",
+ "typename": "Skylake-Client-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Client-v2",
+ "typename": "Skylake-Client-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Client-v1",
+ "typename": "Skylake-Client-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Client-noTSX-IBRS",
+ "typename": "Skylake-Client-noTSX-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "alias-of": "Skylake-Client-v3",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Client-IBRS",
+ "typename": "Skylake-Client-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "alias-of": "Skylake-Client-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Client",
+ "typename": "Skylake-Client-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm"
+ ],
+ "alias-of": "Skylake-Client-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SierraForest-v1",
+ "typename": "SierraForest-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "pku",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "bus-lock-detect",
+ "fsrm",
+ "serialize",
+ "spec-ctrl",
+ "avx-vnni",
+ "cmpccxadd",
+ "fsrs",
+ "avx-ifma",
+ "xsaves",
+ "pku",
+ "ibrs-all",
+ "sbdr-ssdp-no",
+ "fbsdp-no",
+ "psdp-no",
+ "pbrsb-no",
+ "avx-vnni-int8",
+ "avx-ne-convert",
+ "mcdt-no"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SierraForest",
+ "typename": "SierraForest-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "pku",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "bus-lock-detect",
+ "fsrm",
+ "serialize",
+ "spec-ctrl",
+ "avx-vnni",
+ "cmpccxadd",
+ "fsrs",
+ "avx-ifma",
+ "xsaves",
+ "pku",
+ "ibrs-all",
+ "sbdr-ssdp-no",
+ "fbsdp-no",
+ "psdp-no",
+ "pbrsb-no",
+ "avx-vnni-int8",
+ "avx-ne-convert",
+ "mcdt-no"
+ ],
+ "alias-of": "SierraForest-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SapphireRapids-v3",
+ "typename": "SapphireRapids-v3-x86_64-cpu",
+ "unavailable-features": [
+ "ss",
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "bus-lock-detect",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "fsrm",
+ "serialize",
+ "tsx-ldtrk",
+ "amx-bf16",
+ "avx512-fp16",
+ "amx-tile",
+ "amx-int8",
+ "spec-ctrl",
+ "avx-vnni",
+ "avx512-bf16",
+ "fzrm",
+ "fsrs",
+ "fsrc",
+ "xsaves",
+ "xfd",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "amx-tile",
+ "amx-tile",
+ "ibrs-all",
+ "taa-no",
+ "sbdr-ssdp-no",
+ "fbsdp-no",
+ "psdp-no"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SapphireRapids-v2",
+ "typename": "SapphireRapids-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "bus-lock-detect",
+ "fsrm",
+ "serialize",
+ "tsx-ldtrk",
+ "amx-bf16",
+ "avx512-fp16",
+ "amx-tile",
+ "amx-int8",
+ "spec-ctrl",
+ "avx-vnni",
+ "avx512-bf16",
+ "fzrm",
+ "fsrs",
+ "fsrc",
+ "xsaves",
+ "xfd",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "amx-tile",
+ "amx-tile",
+ "ibrs-all",
+ "taa-no",
+ "sbdr-ssdp-no",
+ "fbsdp-no",
+ "psdp-no"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SapphireRapids-v1",
+ "typename": "SapphireRapids-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "bus-lock-detect",
+ "fsrm",
+ "serialize",
+ "tsx-ldtrk",
+ "amx-bf16",
+ "avx512-fp16",
+ "amx-tile",
+ "amx-int8",
+ "spec-ctrl",
+ "avx-vnni",
+ "avx512-bf16",
+ "fzrm",
+ "fsrs",
+ "fsrc",
+ "xsaves",
+ "xfd",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "amx-tile",
+ "amx-tile",
+ "ibrs-all",
+ "taa-no"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SapphireRapids",
+ "typename": "SapphireRapids-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "bus-lock-detect",
+ "fsrm",
+ "serialize",
+ "tsx-ldtrk",
+ "amx-bf16",
+ "avx512-fp16",
+ "amx-tile",
+ "amx-int8",
+ "spec-ctrl",
+ "avx-vnni",
+ "avx512-bf16",
+ "fzrm",
+ "fsrs",
+ "fsrc",
+ "xsaves",
+ "xfd",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "amx-tile",
+ "amx-tile",
+ "ibrs-all",
+ "taa-no"
+ ],
+ "alias-of": "SapphireRapids-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SandyBridge-v2",
+ "typename": "SandyBridge-v2-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SandyBridge-v1",
+ "typename": "SandyBridge-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SandyBridge-IBRS",
+ "typename": "SandyBridge-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "alias-of": "SandyBridge-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SandyBridge",
+ "typename": "SandyBridge-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "SandyBridge-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Penryn-v1",
+ "typename": "Penryn-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Penryn",
+ "typename": "Penryn-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Penryn-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G5-v1",
+ "typename": "Opteron_G5-v1-x86_64-cpu",
+ "unavailable-features": [
+ "xop",
+ "fma4",
+ "tbm"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G5",
+ "typename": "Opteron_G5-x86_64-cpu",
+ "unavailable-features": [
+ "xop",
+ "fma4",
+ "tbm"
+ ],
+ "alias-of": "Opteron_G5-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G4-v1",
+ "typename": "Opteron_G4-v1-x86_64-cpu",
+ "unavailable-features": [
+ "xop",
+ "fma4"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G4",
+ "typename": "Opteron_G4-x86_64-cpu",
+ "unavailable-features": [
+ "xop",
+ "fma4"
+ ],
+ "alias-of": "Opteron_G4-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G3-v1",
+ "typename": "Opteron_G3-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G3",
+ "typename": "Opteron_G3-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Opteron_G3-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G2-v1",
+ "typename": "Opteron_G2-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G2",
+ "typename": "Opteron_G2-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Opteron_G2-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G1-v1",
+ "typename": "Opteron_G1-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G1",
+ "typename": "Opteron_G1-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Opteron_G1-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Nehalem-v2",
+ "typename": "Nehalem-v2-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Nehalem-v1",
+ "typename": "Nehalem-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Nehalem-IBRS",
+ "typename": "Nehalem-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "alias-of": "Nehalem-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Nehalem",
+ "typename": "Nehalem-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Nehalem-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "KnightsMill-v1",
+ "typename": "KnightsMill-v1-x86_64-cpu",
+ "unavailable-features": [
+ "ss",
+ "erms",
+ "avx512f",
+ "avx512pf",
+ "avx512er",
+ "avx512cd",
+ "avx512-vpopcntdq",
+ "avx512-4vnniw",
+ "avx512-4fmaps",
+ "avx512f",
+ "avx512f",
+ "avx512f"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "KnightsMill",
+ "typename": "KnightsMill-x86_64-cpu",
+ "unavailable-features": [
+ "ss",
+ "erms",
+ "avx512f",
+ "avx512pf",
+ "avx512er",
+ "avx512cd",
+ "avx512-vpopcntdq",
+ "avx512-4vnniw",
+ "avx512-4fmaps",
+ "avx512f",
+ "avx512f",
+ "avx512f"
+ ],
+ "alias-of": "KnightsMill-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "IvyBridge-v2",
+ "typename": "IvyBridge-v2-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "IvyBridge-v1",
+ "typename": "IvyBridge-v1-x86_64-cpu",
+ "unavailable-features": [
+ "erms"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "IvyBridge-IBRS",
+ "typename": "IvyBridge-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "spec-ctrl"
+ ],
+ "alias-of": "IvyBridge-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "IvyBridge",
+ "typename": "IvyBridge-x86_64-cpu",
+ "unavailable-features": [
+ "erms"
+ ],
+ "alias-of": "IvyBridge-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-v7",
+ "typename": "Icelake-Server-v7-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "fsrm",
+ "spec-ctrl",
+ "xsaves",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all",
+ "taa-no"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-v6",
+ "typename": "Icelake-Server-v6-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "fsrm",
+ "spec-ctrl",
+ "xsaves",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all",
+ "taa-no"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-v5",
+ "typename": "Icelake-Server-v5-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "fsrm",
+ "spec-ctrl",
+ "xsaves",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all",
+ "taa-no"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-v4",
+ "typename": "Icelake-Server-v4-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "fsrm",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all",
+ "taa-no"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-v3",
+ "typename": "Icelake-Server-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all",
+ "taa-no"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-v2",
+ "typename": "Icelake-Server-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-v1",
+ "typename": "Icelake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-noTSX",
+ "typename": "Icelake-Server-noTSX-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "alias-of": "Icelake-Server-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server",
+ "typename": "Icelake-Server-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "alias-of": "Icelake-Server-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell-v4",
+ "typename": "Haswell-v4-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell-v3",
+ "typename": "Haswell-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell-v2",
+ "typename": "Haswell-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell-v1",
+ "typename": "Haswell-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell-noTSX-IBRS",
+ "typename": "Haswell-noTSX-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "alias-of": "Haswell-v4",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell-noTSX",
+ "typename": "Haswell-noTSX-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid"
+ ],
+ "alias-of": "Haswell-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell-IBRS",
+ "typename": "Haswell-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "alias-of": "Haswell-v3",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell",
+ "typename": "Haswell-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm"
+ ],
+ "alias-of": "Haswell-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "GraniteRapids-v1",
+ "typename": "GraniteRapids-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "bus-lock-detect",
+ "fsrm",
+ "serialize",
+ "tsx-ldtrk",
+ "amx-bf16",
+ "avx512-fp16",
+ "amx-tile",
+ "amx-int8",
+ "spec-ctrl",
+ "avx-vnni",
+ "avx512-bf16",
+ "fzrm",
+ "fsrs",
+ "fsrc",
+ "amx-fp16",
+ "xsaves",
+ "xfd",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "amx-tile",
+ "amx-tile",
+ "ibrs-all",
+ "taa-no",
+ "sbdr-ssdp-no",
+ "fbsdp-no",
+ "psdp-no",
+ "pbrsb-no",
+ "prefetchiti",
+ "mcdt-no"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "GraniteRapids",
+ "typename": "GraniteRapids-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "bus-lock-detect",
+ "fsrm",
+ "serialize",
+ "tsx-ldtrk",
+ "amx-bf16",
+ "avx512-fp16",
+ "amx-tile",
+ "amx-int8",
+ "spec-ctrl",
+ "avx-vnni",
+ "avx512-bf16",
+ "fzrm",
+ "fsrs",
+ "fsrc",
+ "amx-fp16",
+ "xsaves",
+ "xfd",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "amx-tile",
+ "amx-tile",
+ "ibrs-all",
+ "taa-no",
+ "sbdr-ssdp-no",
+ "fbsdp-no",
+ "psdp-no",
+ "pbrsb-no",
+ "prefetchiti",
+ "mcdt-no"
+ ],
+ "alias-of": "GraniteRapids-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-v4",
+ "typename": "EPYC-v4-x86_64-cpu",
+ "unavailable-features": [
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-v3",
+ "typename": "EPYC-v3-x86_64-cpu",
+ "unavailable-features": [
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-v2",
+ "typename": "EPYC-v2-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-v1",
+ "typename": "EPYC-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Rome-v4",
+ "typename": "EPYC-Rome-v4-x86_64-cpu",
+ "unavailable-features": [
+ "ibrs"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Rome-v3",
+ "typename": "EPYC-Rome-v3-x86_64-cpu",
+ "unavailable-features": [
+ "ibrs",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Rome-v2",
+ "typename": "EPYC-Rome-v2-x86_64-cpu",
+ "unavailable-features": [
+ "ibrs",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Rome-v1",
+ "typename": "EPYC-Rome-v1-x86_64-cpu",
+ "unavailable-features": [
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Rome",
+ "typename": "EPYC-Rome-x86_64-cpu",
+ "unavailable-features": [
+ "xsaves"
+ ],
+ "alias-of": "EPYC-Rome-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Milan-v2",
+ "typename": "EPYC-Milan-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "pku",
+ "vaes",
+ "vpclmulqdq",
+ "fsrm",
+ "ibrs",
+ "stibp-always-on",
+ "amd-psfd",
+ "no-nested-data-bp",
+ "xsaves",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Milan-v1",
+ "typename": "EPYC-Milan-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "pku",
+ "fsrm",
+ "ibrs",
+ "xsaves",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Milan",
+ "typename": "EPYC-Milan-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "pku",
+ "fsrm",
+ "ibrs",
+ "xsaves",
+ "pku"
+ ],
+ "alias-of": "EPYC-Milan-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-IBPB",
+ "typename": "EPYC-IBPB-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "EPYC-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Genoa-v1",
+ "typename": "EPYC-Genoa-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "fsrm",
+ "avx512-bf16",
+ "ibrs",
+ "stibp-always-on",
+ "amd-psfd",
+ "no-nested-data-bp",
+ "auto-ibrs",
+ "xsaves",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Genoa",
+ "typename": "EPYC-Genoa-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "fsrm",
+ "avx512-bf16",
+ "ibrs",
+ "stibp-always-on",
+ "amd-psfd",
+ "no-nested-data-bp",
+ "auto-ibrs",
+ "xsaves",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "alias-of": "EPYC-Genoa-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC",
+ "typename": "EPYC-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "EPYC-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Dhyana-v2",
+ "typename": "Dhyana-v2-x86_64-cpu",
+ "unavailable-features": [
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Dhyana-v1",
+ "typename": "Dhyana-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Dhyana",
+ "typename": "Dhyana-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Dhyana-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Denverton-v3",
+ "typename": "Denverton-v3-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "spec-ctrl",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Denverton-v2",
+ "typename": "Denverton-v2-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Denverton-v1",
+ "typename": "Denverton-v1-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "mpx",
+ "spec-ctrl",
+ "mpx",
+ "mpx"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Denverton",
+ "typename": "Denverton-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "mpx",
+ "spec-ctrl",
+ "mpx",
+ "mpx"
+ ],
+ "alias-of": "Denverton-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cooperlake-v2",
+ "typename": "Cooperlake-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "avx512-bf16",
+ "xsaves",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all",
+ "taa-no"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cooperlake-v1",
+ "typename": "Cooperlake-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "avx512-bf16",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all",
+ "taa-no"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cooperlake",
+ "typename": "Cooperlake-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "avx512-bf16",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all",
+ "taa-no"
+ ],
+ "alias-of": "Cooperlake-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Conroe-v1",
+ "typename": "Conroe-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Conroe",
+ "typename": "Conroe-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Conroe-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cascadelake-Server-v5",
+ "typename": "Cascadelake-Server-v5-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "xsaves",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cascadelake-Server-v4",
+ "typename": "Cascadelake-Server-v4-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cascadelake-Server-v3",
+ "typename": "Cascadelake-Server-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cascadelake-Server-v2",
+ "typename": "Cascadelake-Server-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cascadelake-Server-v1",
+ "typename": "Cascadelake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cascadelake-Server-noTSX",
+ "typename": "Cascadelake-Server-noTSX-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all"
+ ],
+ "alias-of": "Cascadelake-Server-v3",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cascadelake-Server",
+ "typename": "Cascadelake-Server-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "alias-of": "Cascadelake-Server-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell-v4",
+ "typename": "Broadwell-v4-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell-v3",
+ "typename": "Broadwell-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell-v2",
+ "typename": "Broadwell-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell-v1",
+ "typename": "Broadwell-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell-noTSX-IBRS",
+ "typename": "Broadwell-noTSX-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "alias-of": "Broadwell-v4",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell-noTSX",
+ "typename": "Broadwell-noTSX-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid"
+ ],
+ "alias-of": "Broadwell-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell-IBRS",
+ "typename": "Broadwell-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "alias-of": "Broadwell-v3",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell",
+ "typename": "Broadwell-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm"
+ ],
+ "alias-of": "Broadwell-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "486-v1",
+ "typename": "486-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "486",
+ "typename": "486-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "486-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ }
+ ],
+ "id": "libvirt-41"
+}
+
+{
+ "execute": "query-tpm-models",
+ "id": "libvirt-42"
+}
+
+{
+ "return": [
+ "tpm-crb",
+ "tpm-tis"
+ ],
+ "id": "libvirt-42"
+}
+
+{
+ "execute": "query-tpm-types",
+ "id": "libvirt-43"
+}
+
+{
+ "return": [
+ "passthrough",
+ "emulator"
+ ],
+ "id": "libvirt-43"
+}
+
+{
+ "execute": "query-command-line-options",
+ "id": "libvirt-44"
+}
+
+{
+ "return": [
+ {
+ "parameters": [
+ {
+ "name": "type",
+ "help": "machine type",
+ "type": "string"
+ },
+ {
+ "name": "auto-shutdown",
+ "type": "boolean"
+ },
+ {
+ "name": "vfio-user",
+ "type": "boolean"
+ },
+ {
+ "name": "ioapic2",
+ "help": "Enable second IO-APIC",
+ "type": "boolean"
+ },
+ {
+ "name": "auto-kernel-cmdline",
+ "help": "Set off to disable adding virtio-mmio devices to the kernel cmdline",
+ "type": "boolean"
+ },
+ {
+ "name": "rtc",
+ "help": "Enable MC146818 RTC",
+ "type": "boolean"
+ },
+ {
+ "name": "pcie",
+ "help": "Enable PCIe",
+ "type": "boolean"
+ },
+ {
+ "name": "x-option-roms",
+ "help": "Set off to disable loading option ROMs",
+ "type": "boolean"
+ },
+ {
+ "name": "isa-serial",
+ "help": "Set off to disable the instantiation an ISA serial port",
+ "type": "boolean"
+ },
+ {
+ "name": "x-south-bridge",
+ "help": "Use a different south bridge than PIIX3",
+ "type": "string"
+ },
+ {
+ "name": "kernel",
+ "help": "Linux kernel image file",
+ "type": "string"
+ },
+ {
+ "name": "dt-compatible",
+ "help": "Overrides the \"compatible\" property of the dt root node",
+ "type": "string"
+ },
+ {
+ "name": "boot",
+ "help": "Boot configuration",
+ "type": "string"
+ },
+ {
+ "name": "memory",
+ "help": "Memory size configuration",
+ "type": "string"
+ },
+ {
+ "name": "initrd",
+ "help": "Linux initial ramdisk file",
+ "type": "string"
+ },
+ {
+ "name": "confidential-guest-support",
+ "help": "Set confidential guest scheme to support",
+ "type": "string"
+ },
+ {
+ "name": "graphics",
+ "help": "Set on/off to enable/disable graphics emulation",
+ "type": "boolean"
+ },
+ {
+ "name": "usb",
+ "help": "Set on/off to enable/disable usb",
+ "type": "boolean"
+ },
+ {
+ "name": "firmware",
+ "help": "Firmware image",
+ "type": "string"
+ },
+ {
+ "name": "memory-encryption",
+ "help": "Set memory encryption object to use",
+ "type": "string"
+ },
+ {
+ "name": "smp",
+ "help": "CPU topology",
+ "type": "string"
+ },
+ {
+ "name": "dump-guest-core",
+ "help": "Include guest memory in a core dump",
+ "type": "boolean"
+ },
+ {
+ "name": "phandle-start",
+ "help": "The first phandle ID we may generate dynamically",
+ "type": "number"
+ },
+ {
+ "name": "dumpdtb",
+ "help": "Dump current dtb to a file and quit",
+ "type": "string"
+ },
+ {
+ "name": "memory-backend",
+ "help": "Set RAM backendValid value is ID of hostmem based backend",
+ "type": "string"
+ },
+ {
+ "name": "dtb",
+ "help": "Linux kernel device tree file",
+ "type": "string"
+ },
+ {
+ "name": "mem-merge",
+ "help": "Enable/disable memory merge support",
+ "type": "boolean"
+ },
+ {
+ "name": "append",
+ "help": "Linux kernel command line",
+ "type": "string"
+ },
+ {
+ "name": "suppress-vmdesc",
+ "help": "Set on to disable self-describing migration",
+ "type": "boolean"
+ },
+ {
+ "name": "smm",
+ "help": "Enable SMM",
+ "type": "boolean"
+ },
+ {
+ "name": "acpi",
+ "help": "Enable ACPI",
+ "type": "boolean"
+ },
+ {
+ "name": "pit",
+ "help": "Enable i8254 PIT",
+ "type": "boolean"
+ },
+ {
+ "name": "pic",
+ "help": "Enable i8259 PIC",
+ "type": "boolean"
+ },
+ {
+ "name": "x-oem-table-id",
+ "help": "Override the default value of field OEM Table ID in ACPI table header.The string may be up to 8 bytes in size",
+ "type": "string"
+ },
+ {
+ "name": "bus-lock-ratelimit",
+ "help": "Set the ratelimit for the bus locks acquired in VMs",
+ "type": "string"
+ },
+ {
+ "name": "sgx-epc",
+ "help": "SGX EPC device",
+ "type": "string"
+ },
+ {
+ "name": "x-oem-id",
+ "help": "Override the default value of field OEMID in ACPI table header.The string may be up to 6 bytes in size",
+ "type": "string"
+ },
+ {
+ "name": "max-fw-size",
+ "help": "Maximum combined firmware size",
+ "type": "size"
+ },
+ {
+ "name": "default-bus-bypass-iommu",
+ "type": "boolean"
+ },
+ {
+ "name": "sata",
+ "help": "Enable/disable Serial ATA bus",
+ "type": "boolean"
+ },
+ {
+ "name": "vmport",
+ "help": "Enable vmport (pc & q35)",
+ "type": "boolean"
+ },
+ {
+ "name": "i8042",
+ "type": "boolean"
+ },
+ {
+ "name": "hpet",
+ "help": "Enable/disable high precision event timer emulation",
+ "type": "boolean"
+ },
+ {
+ "name": "smbios-entry-point-type",
+ "help": "SMBIOS Entry Point type [32, 64]",
+ "type": "string"
+ },
+ {
+ "name": "max-ram-below-4g",
+ "help": "Maximum ram below the 4G boundary (32bit boundary)",
+ "type": "size"
+ },
+ {
+ "name": "fd-bootchk",
+ "type": "boolean"
+ },
+ {
+ "name": "smbus",
+ "help": "Enable/disable system management bus",
+ "type": "boolean"
+ }
+ ],
+ "option": "machine"
+ },
+ {
+ "parameters": [
+ {
+ "name": "rendernode",
+ "type": "string"
+ },
+ {
+ "name": "gl",
+ "type": "boolean"
+ },
+ {
+ "name": "head",
+ "type": "number"
+ },
+ {
+ "name": "display",
+ "type": "string"
+ },
+ {
+ "name": "seamless-migration",
+ "type": "boolean"
+ },
+ {
+ "name": "playback-compression",
+ "type": "boolean"
+ },
+ {
+ "name": "agent-mouse",
+ "type": "boolean"
+ },
+ {
+ "name": "streaming-video",
+ "type": "string"
+ },
+ {
+ "name": "zlib-glz-wan-compression",
+ "type": "string"
+ },
+ {
+ "name": "jpeg-wan-compression",
+ "type": "string"
+ },
+ {
+ "name": "image-compression",
+ "type": "string"
+ },
+ {
+ "name": "plaintext-channel",
+ "type": "string"
+ },
+ {
+ "name": "tls-channel",
+ "type": "string"
+ },
+ {
+ "name": "tls-ciphers",
+ "type": "string"
+ },
+ {
+ "name": "x509-dh-key-file",
+ "type": "string"
+ },
+ {
+ "name": "x509-cacert-file",
+ "type": "string"
+ },
+ {
+ "name": "x509-cert-file",
+ "type": "string"
+ },
+ {
+ "name": "x509-key-password",
+ "type": "string"
+ },
+ {
+ "name": "x509-key-file",
+ "type": "string"
+ },
+ {
+ "name": "x509-dir",
+ "type": "string"
+ },
+ {
+ "name": "sasl",
+ "type": "boolean"
+ },
+ {
+ "name": "disable-agent-file-xfer",
+ "type": "boolean"
+ },
+ {
+ "name": "disable-copy-paste",
+ "type": "boolean"
+ },
+ {
+ "name": "disable-ticketing",
+ "type": "boolean"
+ },
+ {
+ "name": "password-secret",
+ "type": "string"
+ },
+ {
+ "name": "unix",
+ "type": "boolean"
+ },
+ {
+ "name": "ipv6",
+ "type": "boolean"
+ },
+ {
+ "name": "ipv4",
+ "type": "boolean"
+ },
+ {
+ "name": "addr",
+ "type": "string"
+ },
+ {
+ "name": "tls-port",
+ "type": "number"
+ },
+ {
+ "name": "port",
+ "type": "number"
+ }
+ ],
+ "option": "spice"
+ },
+ {
+ "parameters": [
+ {
+ "name": "timeout",
+ "help": "Request timeout in seconds (default 0 = no timeout)",
+ "type": "number"
+ },
+ {
+ "name": "initiator-name",
+ "help": "Initiator iqn name to use when connecting",
+ "type": "string"
+ },
+ {
+ "name": "header-digest",
+ "help": "HeaderDigest setting. {CRC32C|CRC32C-NONE|NONE-CRC32C|NONE}",
+ "type": "string"
+ },
+ {
+ "name": "password-secret",
+ "help": "ID of the secret providing password for CHAP authentication to target",
+ "type": "string"
+ },
+ {
+ "name": "password",
+ "help": "password for CHAP authentication to target",
+ "type": "string"
+ },
+ {
+ "name": "user",
+ "help": "username for CHAP authentication to target",
+ "type": "string"
+ }
+ ],
+ "option": "iscsi"
+ },
+ {
+ "parameters": [
+ {
+ "name": "resourcecontrol",
+ "type": "string"
+ },
+ {
+ "name": "spawn",
+ "type": "string"
+ },
+ {
+ "name": "elevateprivileges",
+ "type": "string"
+ },
+ {
+ "name": "obsolete",
+ "type": "string"
+ },
+ {
+ "name": "enable",
+ "type": "boolean"
+ }
+ ],
+ "option": "sandbox"
+ },
+ {
+ "parameters": [
+ {
+ "name": "dmode",
+ "type": "number"
+ },
+ {
+ "name": "fmode",
+ "type": "number"
+ },
+ {
+ "name": "sock_fd",
+ "type": "number"
+ },
+ {
+ "name": "socket",
+ "type": "string"
+ },
+ {
+ "name": "multidevs",
+ "type": "string"
+ },
+ {
+ "name": "readonly",
+ "type": "boolean"
+ },
+ {
+ "name": "writeout",
+ "type": "string"
+ },
+ {
+ "name": "security_model",
+ "type": "string"
+ },
+ {
+ "name": "mount_tag",
+ "type": "string"
+ },
+ {
+ "name": "path",
+ "type": "string"
+ },
+ {
+ "name": "fsdriver",
+ "type": "string"
+ }
+ ],
+ "option": "virtfs"
+ },
+ {
+ "parameters": [
+ {
+ "name": "throttling.iops-size",
+ "help": "when limiting by iops max size of an I/O in bytes",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-write-max-length",
+ "help": "length of the bps-write-max burst period, in seconds",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-read-max-length",
+ "help": "length of the bps-read-max burst period, in seconds",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-total-max-length",
+ "help": "length of the bps-total-max burst period, in seconds",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-write-max-length",
+ "help": "length of the iops-write-max burst period, in seconds",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-read-max-length",
+ "help": "length of the iops-read-max burst period, in seconds",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-total-max-length",
+ "help": "length of the iops-total-max burst period, in seconds",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-write-max",
+ "help": "total bytes write burst",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-read-max",
+ "help": "total bytes read burst",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-total-max",
+ "help": "total bytes burst",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-write-max",
+ "help": "I/O operations write burst",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-read-max",
+ "help": "I/O operations read burst",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-total-max",
+ "help": "I/O operations burst",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-write",
+ "help": "limit write bytes per second",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-read",
+ "help": "limit read bytes per second",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-total",
+ "help": "limit total bytes per second",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-write",
+ "help": "limit write operations per second",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-read",
+ "help": "limit read operations per second",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-total",
+ "help": "limit total I/O operations per second",
+ "type": "number"
+ },
+ {
+ "name": "dmode",
+ "type": "number"
+ },
+ {
+ "name": "fmode",
+ "type": "number"
+ },
+ {
+ "name": "sock_fd",
+ "type": "number"
+ },
+ {
+ "name": "socket",
+ "type": "string"
+ },
+ {
+ "name": "multidevs",
+ "type": "string"
+ },
+ {
+ "name": "readonly",
+ "type": "boolean"
+ },
+ {
+ "name": "writeout",
+ "type": "string"
+ },
+ {
+ "name": "security_model",
+ "type": "string"
+ },
+ {
+ "name": "path",
+ "type": "string"
+ },
+ {
+ "name": "fsdriver",
+ "type": "string"
+ }
+ ],
+ "option": "fsdev"
+ },
+ {
+ "parameters": [],
+ "option": "smbios"
+ },
+ {
+ "parameters": [],
+ "option": "acpi"
+ },
+ {
+ "parameters": [
+ {
+ "name": "power-control",
+ "type": "boolean"
+ },
+ {
+ "name": "audiodev",
+ "type": "string"
+ },
+ {
+ "name": "non-adaptive",
+ "type": "boolean"
+ },
+ {
+ "name": "lossy",
+ "type": "boolean"
+ },
+ {
+ "name": "sasl-authz",
+ "type": "string"
+ },
+ {
+ "name": "tls-authz",
+ "type": "string"
+ },
+ {
+ "name": "sasl",
+ "type": "boolean"
+ },
+ {
+ "name": "key-delay-ms",
+ "type": "number"
+ },
+ {
+ "name": "lock-key-sync",
+ "type": "boolean"
+ },
+ {
+ "name": "reverse",
+ "type": "boolean"
+ },
+ {
+ "name": "password-secret",
+ "type": "string"
+ },
+ {
+ "name": "password",
+ "type": "boolean"
+ },
+ {
+ "name": "ipv6",
+ "type": "boolean"
+ },
+ {
+ "name": "ipv4",
+ "type": "boolean"
+ },
+ {
+ "name": "to",
+ "type": "number"
+ },
+ {
+ "name": "connections",
+ "type": "number"
+ },
+ {
+ "name": "head",
+ "type": "number"
+ },
+ {
+ "name": "display",
+ "type": "string"
+ },
+ {
+ "name": "share",
+ "type": "string"
+ },
+ {
+ "name": "tls-creds",
+ "type": "string"
+ },
+ {
+ "name": "websocket",
+ "type": "string"
+ },
+ {
+ "name": "vnc",
+ "type": "string"
+ }
+ ],
+ "option": "vnc"
+ },
+ {
+ "parameters": [
+ {
+ "name": "user",
+ "type": "string"
+ },
+ {
+ "name": "chroot",
+ "type": "string"
+ },
+ {
+ "name": "async-teardown",
+ "type": "boolean"
+ }
+ ],
+ "option": "run-with"
+ },
+ {
+ "parameters": [
+ {
+ "name": "watchdog",
+ "type": "string"
+ },
+ {
+ "name": "panic",
+ "type": "string"
+ },
+ {
+ "name": "reboot",
+ "type": "string"
+ },
+ {
+ "name": "shutdown",
+ "type": "string"
+ }
+ ],
+ "option": "action"
+ },
+ {
+ "parameters": [
+ {
+ "name": "gen_id",
+ "help": "Sets id of the object generating the fw_cfg blob to be inserted",
+ "type": "string"
+ },
+ {
+ "name": "string",
+ "help": "Sets content of the blob to be inserted from a string",
+ "type": "string"
+ },
+ {
+ "name": "file",
+ "help": "Sets the name of the file from which the fw_cfg blob will be loaded",
+ "type": "string"
+ },
+ {
+ "name": "name",
+ "help": "Sets the fw_cfg name of the blob to be inserted",
+ "type": "string"
+ }
+ ],
+ "option": "fw_cfg"
+ },
+ {
+ "parameters": [],
+ "option": ""
+ },
+ {
+ "parameters": [
+ {
+ "name": "rrsnapshot",
+ "type": "string"
+ },
+ {
+ "name": "rrfile",
+ "type": "string"
+ },
+ {
+ "name": "rr",
+ "type": "string"
+ },
+ {
+ "name": "sleep",
+ "type": "boolean"
+ },
+ {
+ "name": "align",
+ "type": "boolean"
+ },
+ {
+ "name": "shift",
+ "type": "string"
+ }
+ ],
+ "option": "icount"
+ },
+ {
+ "parameters": [],
+ "option": "numa"
+ },
+ {
+ "parameters": [
+ {
+ "name": "debug-threads",
+ "help": "When enabled, name the individual threads; defaults off.\nNOTE: The thread names are for debugging and not a\nstable API.",
+ "type": "boolean"
+ },
+ {
+ "name": "process",
+ "help": "Sets the name of the QEMU process, as shown in top etc",
+ "type": "string"
+ },
+ {
+ "name": "guest",
+ "help": "Sets the name of the guest.\nThis name will be displayed in the SDL window caption.\nThe name will also be used for the VNC server",
+ "type": "string"
+ }
+ ],
+ "option": "name"
+ },
+ {
+ "parameters": [
+ {
+ "name": "guest-name",
+ "help": "Prepends guest name for error messages but only if -name guest is set otherwise option is ignored\n",
+ "type": "boolean"
+ },
+ {
+ "name": "timestamp",
+ "type": "boolean"
+ }
+ ],
+ "option": "msg"
+ },
+ {
+ "parameters": [
+ {
+ "name": "cpu-pm",
+ "type": "boolean"
+ },
+ {
+ "name": "mem-lock",
+ "type": "boolean"
+ }
+ ],
+ "option": "overcommit"
+ },
+ {
+ "parameters": [],
+ "option": "tpmdev"
+ },
+ {
+ "parameters": [],
+ "option": "object"
+ },
+ {
+ "parameters": [
+ {
+ "name": "opaque",
+ "help": "free-form string used to describe fd",
+ "type": "string"
+ },
+ {
+ "name": "set",
+ "help": "ID of the fd set to add fd to",
+ "type": "number"
+ },
+ {
+ "name": "fd",
+ "help": "file descriptor of which a duplicate is added to fd set",
+ "type": "number"
+ }
+ ],
+ "option": "add-fd"
+ },
+ {
+ "parameters": [
+ {
+ "name": "strict",
+ "type": "boolean"
+ },
+ {
+ "name": "reboot-timeout",
+ "type": "number"
+ },
+ {
+ "name": "splash-time",
+ "type": "number"
+ },
+ {
+ "name": "splash",
+ "type": "string"
+ },
+ {
+ "name": "menu",
+ "type": "boolean"
+ },
+ {
+ "name": "once",
+ "type": "string"
+ },
+ {
+ "name": "order",
+ "type": "string"
+ }
+ ],
+ "option": "boot-opts"
+ },
+ {
+ "parameters": [
+ {
+ "name": "maxcpus",
+ "type": "number"
+ },
+ {
+ "name": "threads",
+ "type": "number"
+ },
+ {
+ "name": "cores",
+ "type": "number"
+ },
+ {
+ "name": "modules",
+ "type": "number"
+ },
+ {
+ "name": "clusters",
+ "type": "number"
+ },
+ {
+ "name": "dies",
+ "type": "number"
+ },
+ {
+ "name": "sockets",
+ "type": "number"
+ },
+ {
+ "name": "books",
+ "type": "number"
+ },
+ {
+ "name": "drawers",
+ "type": "number"
+ },
+ {
+ "name": "cpus",
+ "type": "number"
+ }
+ ],
+ "option": "smp-opts"
+ },
+ {
+ "parameters": [
+ {
+ "name": "maxmem",
+ "type": "size"
+ },
+ {
+ "name": "slots",
+ "type": "number"
+ },
+ {
+ "name": "size",
+ "type": "size"
+ }
+ ],
+ "option": "memory"
+ },
+ {
+ "parameters": [],
+ "option": "accel"
+ },
+ {
+ "parameters": [
+ {
+ "name": "romfile",
+ "type": "string"
+ },
+ {
+ "name": "bootindex",
+ "type": "number"
+ }
+ ],
+ "option": "option-rom"
+ },
+ {
+ "parameters": [],
+ "option": "plugin"
+ },
+ {
+ "parameters": [
+ {
+ "name": "file",
+ "type": "string"
+ },
+ {
+ "name": "events",
+ "type": "string"
+ },
+ {
+ "name": "enable",
+ "type": "string"
+ }
+ ],
+ "option": "trace"
+ },
+ {
+ "parameters": [
+ {
+ "name": "pretty",
+ "type": "boolean"
+ },
+ {
+ "name": "chardev",
+ "type": "string"
+ },
+ {
+ "name": "mode",
+ "type": "string"
+ }
+ ],
+ "option": "mon"
+ },
+ {
+ "parameters": [
+ {
+ "name": "value",
+ "type": "string"
+ },
+ {
+ "name": "property",
+ "type": "string"
+ },
+ {
+ "name": "driver",
+ "type": "string"
+ }
+ ],
+ "option": "global"
+ },
+ {
+ "parameters": [
+ {
+ "name": "driftfix",
+ "type": "string"
+ },
+ {
+ "name": "clock",
+ "type": "string"
+ },
+ {
+ "name": "base",
+ "type": "string"
+ }
+ ],
+ "option": "rtc"
+ },
+ {
+ "parameters": [],
+ "option": "net"
+ },
+ {
+ "parameters": [],
+ "option": "nic"
+ },
+ {
+ "parameters": [],
+ "option": "netdev"
+ },
+ {
+ "parameters": [],
+ "option": "device"
+ },
+ {
+ "parameters": [
+ {
+ "name": "abstract",
+ "type": "boolean"
+ },
+ {
+ "name": "tight",
+ "default": "on",
+ "type": "boolean"
+ },
+ {
+ "name": "clipboard",
+ "type": "boolean"
+ },
+ {
+ "name": "mouse",
+ "type": "boolean"
+ },
+ {
+ "name": "logappend",
+ "type": "boolean"
+ },
+ {
+ "name": "logfile",
+ "type": "string"
+ },
+ {
+ "name": "append",
+ "type": "boolean"
+ },
+ {
+ "name": "chardev",
+ "type": "string"
+ },
+ {
+ "name": "size",
+ "type": "size"
+ },
+ {
+ "name": "debug",
+ "type": "number"
+ },
+ {
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "name": "signal",
+ "type": "boolean"
+ },
+ {
+ "name": "mux",
+ "type": "boolean"
+ },
+ {
+ "name": "rows",
+ "type": "number"
+ },
+ {
+ "name": "cols",
+ "type": "number"
+ },
+ {
+ "name": "height",
+ "type": "number"
+ },
+ {
+ "name": "width",
+ "type": "number"
+ },
+ {
+ "name": "websocket",
+ "type": "boolean"
+ },
+ {
+ "name": "tls-authz",
+ "type": "string"
+ },
+ {
+ "name": "tls-creds",
+ "type": "string"
+ },
+ {
+ "name": "tn3270",
+ "type": "boolean"
+ },
+ {
+ "name": "telnet",
+ "type": "boolean"
+ },
+ {
+ "name": "reconnect",
+ "type": "number"
+ },
+ {
+ "name": "nodelay",
+ "type": "boolean"
+ },
+ {
+ "name": "delay",
+ "type": "boolean"
+ },
+ {
+ "name": "server",
+ "type": "boolean"
+ },
+ {
+ "name": "wait",
+ "type": "boolean"
+ },
+ {
+ "name": "ipv6",
+ "type": "boolean"
+ },
+ {
+ "name": "ipv4",
+ "type": "boolean"
+ },
+ {
+ "name": "to",
+ "type": "number"
+ },
+ {
+ "name": "localport",
+ "type": "string"
+ },
+ {
+ "name": "localaddr",
+ "type": "string"
+ },
+ {
+ "name": "fd",
+ "type": "string"
+ },
+ {
+ "name": "port",
+ "type": "string"
+ },
+ {
+ "name": "host",
+ "type": "string"
+ },
+ {
+ "name": "input-path",
+ "type": "string"
+ },
+ {
+ "name": "path",
+ "type": "string"
+ },
+ {
+ "name": "backend",
+ "type": "string"
+ }
+ ],
+ "option": "chardev"
+ },
+ {
+ "parameters": [
+ {
+ "name": "copy-on-read",
+ "help": "copy read data from backing file into image file",
+ "type": "boolean"
+ },
+ {
+ "name": "werror",
+ "help": "write error action",
+ "type": "string"
+ },
+ {
+ "name": "rerror",
+ "help": "read error action",
+ "type": "string"
+ },
+ {
+ "name": "read-only",
+ "help": "open drive file as read-only",
+ "type": "boolean"
+ },
+ {
+ "name": "file",
+ "help": "file name",
+ "type": "string"
+ },
+ {
+ "name": "if",
+ "help": "interface (ide, scsi, sd, mtd, floppy, pflash, virtio)",
+ "type": "string"
+ },
+ {
+ "name": "media",
+ "help": "media type (disk, cdrom)",
+ "type": "string"
+ },
+ {
+ "name": "index",
+ "help": "index number",
+ "type": "number"
+ },
+ {
+ "name": "unit",
+ "help": "unit number (i.e. lun for scsi)",
+ "type": "number"
+ },
+ {
+ "name": "bus",
+ "help": "bus number",
+ "type": "number"
+ },
+ {
+ "name": "stats-account-failed",
+ "help": "whether to account for failed I/O operations in the statistics",
+ "type": "boolean"
+ },
+ {
+ "name": "stats-account-invalid",
+ "help": "whether to account for invalid I/O operations in the statistics",
+ "type": "boolean"
+ },
+ {
+ "name": "detect-zeroes",
+ "help": "try to optimize zero writes (off, on, unmap)",
+ "type": "string"
+ },
+ {
+ "name": "throttling.group",
+ "help": "name of the block throttling group",
+ "type": "string"
+ },
+ {
+ "name": "throttling.iops-size",
+ "help": "when limiting by iops max size of an I/O in bytes",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-write-max-length",
+ "help": "length of the bps-write-max burst period, in seconds",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-read-max-length",
+ "help": "length of the bps-read-max burst period, in seconds",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-total-max-length",
+ "help": "length of the bps-total-max burst period, in seconds",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-write-max-length",
+ "help": "length of the iops-write-max burst period, in seconds",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-read-max-length",
+ "help": "length of the iops-read-max burst period, in seconds",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-total-max-length",
+ "help": "length of the iops-total-max burst period, in seconds",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-write-max",
+ "help": "total bytes write burst",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-read-max",
+ "help": "total bytes read burst",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-total-max",
+ "help": "total bytes burst",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-write-max",
+ "help": "I/O operations write burst",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-read-max",
+ "help": "I/O operations read burst",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-total-max",
+ "help": "I/O operations burst",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-write",
+ "help": "limit write bytes per second",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-read",
+ "help": "limit read bytes per second",
+ "type": "number"
+ },
+ {
+ "name": "throttling.bps-total",
+ "help": "limit total bytes per second",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-write",
+ "help": "limit write operations per second",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-read",
+ "help": "limit read operations per second",
+ "type": "number"
+ },
+ {
+ "name": "throttling.iops-total",
+ "help": "limit total I/O operations per second",
+ "type": "number"
+ },
+ {
+ "name": "werror",
+ "help": "write error action",
+ "type": "string"
+ },
+ {
+ "name": "format",
+ "help": "disk format (raw, qcow2, ...)",
+ "type": "string"
+ },
+ {
+ "name": "cache.writeback",
+ "help": "Enable writeback mode",
+ "type": "boolean"
+ },
+ {
+ "name": "aio",
+ "help": "host AIO implementation (threads, native, io_uring)",
+ "type": "string"
+ },
+ {
+ "name": "snapshot",
+ "help": "enable/disable snapshot mode",
+ "type": "boolean"
+ },
+ {
+ "name": "force-share",
+ "help": "always accept other writers (default: off)",
+ "type": "boolean"
+ },
+ {
+ "name": "discard",
+ "help": "discard operation (ignore/off, unmap/on)",
+ "type": "string"
+ },
+ {
+ "name": "auto-read-only",
+ "help": "Node can become read-only if opening read-write fails",
+ "type": "boolean"
+ },
+ {
+ "name": "cache.no-flush",
+ "help": "Ignore flush requests",
+ "type": "boolean"
+ },
+ {
+ "name": "cache.direct",
+ "help": "Bypass software writeback cache on the host",
+ "type": "boolean"
+ },
+ {
+ "name": "driver",
+ "help": "Block driver to use for the node",
+ "type": "string"
+ },
+ {
+ "name": "node-name",
+ "help": "Node name of the block device node",
+ "type": "string"
+ }
+ ],
+ "option": "drive"
+ }
+ ],
+ "id": "libvirt-44"
+}
+
+{
+ "execute": "query-migrate-capabilities",
+ "id": "libvirt-45"
+}
+
+{
+ "return": [
+ {
+ "state": false,
+ "capability": "xbzrle"
+ },
+ {
+ "state": false,
+ "capability": "rdma-pin-all"
+ },
+ {
+ "state": false,
+ "capability": "auto-converge"
+ },
+ {
+ "state": false,
+ "capability": "zero-blocks"
+ },
+ {
+ "state": false,
+ "capability": "events"
+ },
+ {
+ "state": false,
+ "capability": "postcopy-ram"
+ },
+ {
+ "state": false,
+ "capability": "x-colo"
+ },
+ {
+ "state": false,
+ "capability": "release-ram"
+ },
+ {
+ "state": false,
+ "capability": "return-path"
+ },
+ {
+ "state": false,
+ "capability": "pause-before-switchover"
+ },
+ {
+ "state": false,
+ "capability": "multifd"
+ },
+ {
+ "state": false,
+ "capability": "dirty-bitmaps"
+ },
+ {
+ "state": false,
+ "capability": "postcopy-blocktime"
+ },
+ {
+ "state": false,
+ "capability": "late-block-activate"
+ },
+ {
+ "state": false,
+ "capability": "x-ignore-shared"
+ },
+ {
+ "state": false,
+ "capability": "validate-uuid"
+ },
+ {
+ "state": false,
+ "capability": "background-snapshot"
+ },
+ {
+ "state": false,
+ "capability": "zero-copy-send"
+ },
+ {
+ "state": false,
+ "capability": "postcopy-preempt"
+ },
+ {
+ "state": false,
+ "capability": "switchover-ack"
+ },
+ {
+ "state": false,
+ "capability": "dirty-limit"
+ },
+ {
+ "state": false,
+ "capability": "mapped-ram"
+ }
+ ],
+ "id": "libvirt-45"
+}
+
+{
+ "execute": "query-sev-capabilities",
+ "id": "libvirt-46"
+}
+
+{
+ "id": "libvirt-46",
+ "error": {
+ "class": "GenericError",
+ "desc": "SEV: Failed to open /dev/sev: No such file or directory"
+ }
+}
+
+{
+ "execute": "query-sgx-capabilities",
+ "id": "libvirt-47"
+}
+
+{
+ "id": "libvirt-47",
+ "error": {
+ "class": "GenericError",
+ "desc": "SGX is not enabled in KVM"
+ }
+}
+
+{
+ "execute": "query-cpu-model-expansion",
+ "arguments": {
+ "type": "static",
+ "model": {
+ "name": "host"
+ }
+ },
+ "id": "libvirt-48"
+}
+
+{
+ "return": {
+ "model": {
+ "name": "base",
+ "props": {
+ "avx-ne-convert": false,
+ "vmx-entry-load-rtit-ctl": false,
+ "svme-addr-chk": true,
+ "lfence-always-serializing": true,
+ "cmov": true,
+ "ia64": false,
+ "ssb-no": false,
+ "aes": true,
+ "vmx-apicv-xapic": false,
+ "mmx": true,
+ "rdpid": true,
+ "arat": true,
+ "vmx-page-walk-4": false,
+ "vmx-page-walk-5": false,
+ "gfni": false,
+ "ibrs-all": false,
+ "vmx-desc-exit": false,
+ "pause-filter": true,
+ "mcdt-no": false,
+ "bus-lock-detect": false,
+ "xsavec": true,
+ "intel-pt": false,
+ "vmx-tsc-scaling": false,
+ "prefetchiti": false,
+ "vmx-cr8-store-exit": false,
+ "vmx-rdseed-exit": false,
+ "amx-fp16": false,
+ "vmx-eptp-switching": false,
+ "kvm-asyncpf": true,
+ "perfctr-core": true,
+ "mpx": false,
+ "auto-ibrs": false,
+ "pbe": false,
+ "avx512cd": false,
+ "decodeassists": false,
+ "vmx-exit-load-efer": false,
+ "vmx-exit-clear-bndcfgs": false,
+ "sse4.1": true,
+ "family": 23,
+ "intel-pt-lip": false,
+ "vmx-vmwrite-vmexit-fields": false,
+ "kvm-asyncpf-int": true,
+ "vmx-vnmi": false,
+ "vmx-true-ctls": false,
+ "vmx-ept-execonly": false,
+ "vmx-exit-save-efer": false,
+ "vmx-invept-all-context": false,
+ "wbnoinvd": true,
+ "avx512f": false,
+ "rfds-no": true,
+ "msr": true,
+ "mce": true,
+ "mca": true,
+ "xcrypt": false,
+ "sgx": false,
+ "vmx-exit-load-pat": false,
+ "vmx-intr-exit": false,
+ "min-level": 16,
+ "vmx-flexpriority": false,
+ "xgetbv1": true,
+ "cid": false,
+ "sgx-exinfo": false,
+ "amd-psfd": false,
+ "gds-no": true,
+ "ds": false,
+ "fxsr": true,
+ "avx512-fp16": false,
+ "avx512-bf16": false,
+ "vmx-cr8-load-exit": false,
+ "xsaveopt": true,
+ "arch-lbr": false,
+ "vmx-apicv-vid": false,
+ "vmx-exit-save-pat": false,
+ "xtpr": false,
+ "tsx-ctrl": false,
+ "vmx-ple": false,
+ "avx512vl": false,
+ "avx512-vpopcntdq": false,
+ "phe": false,
+ "extapic": false,
+ "3dnowprefetch": true,
+ "vmx-vmfunc": false,
+ "vmx-activity-shutdown": false,
+ "sgx1": false,
+ "sgx2": false,
+ "avx512vbmi2": false,
+ "cr8legacy": true,
+ "vmx-encls-exit": false,
+ "null-sel-clr-base": true,
+ "stibp": true,
+ "vmx-msr-bitmap": false,
+ "xcrypt-en": false,
+ "vmx-mwait-exit": false,
+ "vmx-pml": false,
+ "vmx-nmi-exit": false,
+ "amx-tile": false,
+ "vmx-invept-single-context-noglobals": false,
+ "pn": false,
+ "rsba": false,
+ "dca": false,
+ "vendor": "AuthenticAMD",
+ "vmx-unrestricted-guest": false,
+ "vmx-cr3-store-noexit": false,
+ "pku": false,
+ "pks": false,
+ "smx": false,
+ "cmp-legacy": true,
+ "avx512-4fmaps": false,
+ "vmcb-clean": true,
+ "hle": false,
+ "avx-vnni": false,
+ "3dnowext": false,
+ "amd-no-ssb": false,
+ "npt": true,
+ "sgxlc": false,
+ "rdctl-no": true,
+ "vmx-invvpid": false,
+ "clwb": true,
+ "lbrv": true,
+ "adx": true,
+ "ss": false,
+ "pni": true,
+ "tsx-ldtrk": false,
+ "svm-lock": false,
+ "smep": true,
+ "smap": true,
+ "pfthreshold": true,
+ "vmx-invpcid-exit": false,
+ "amx-int8": false,
+ "x2apic": true,
+ "avx512vbmi": false,
+ "avx512vnni": false,
+ "sgx-edeccssa": false,
+ "vmx-apicv-x2apic": false,
+ "kvm-pv-sched-yield": true,
+ "vmx-invlpg-exit": false,
+ "no-nested-data-bp": false,
+ "vmx-invvpid-all-context": false,
+ "vmx-activity-hlt": false,
+ "flushbyasid": true,
+ "f16c": true,
+ "vmx-exit-ack-intr": false,
+ "ace2-en": false,
+ "pae": true,
+ "pat": true,
+ "sse": true,
+ "phe-en": false,
+ "vmx-tsc-offset": false,
+ "kvm-nopiodelay": true,
+ "tm": false,
+ "fbsdp-no": false,
+ "kvmclock-stable-bit": true,
+ "vmx-rdtsc-exit": false,
+ "hypervisor": true,
+ "vmx-rdtscp-exit": false,
+ "mds-no": true,
+ "pcommit": false,
+ "vmx-vpid": false,
+ "syscall": true,
+ "kvm-asyncpf-vmexit": true,
+ "avx512dq": false,
+ "svm": true,
+ "invtsc": false,
+ "vmx-monitor-exit": false,
+ "sse2": true,
+ "ssbd": true,
+ "vmx-wbinvd-exit": false,
+ "est": false,
+ "kvm-poll-control": true,
+ "avx512ifma": false,
+ "tm2": false,
+ "kvm-pv-eoi": true,
+ "kvm-pv-ipi": true,
+ "cx8": true,
+ "vmx-invvpid-single-addr": false,
+ "waitpkg": false,
+ "cldemote": false,
+ "sgx-tokenkey": false,
+ "vmx-ept": false,
+ "pbrsb-no": false,
+ "xfd": false,
+ "kvm-mmu": false,
+ "sse4.2": true,
+ "pge": true,
+ "avx512bitalg": false,
+ "pdcm": false,
+ "vmx-entry-load-bndcfgs": false,
+ "vmx-exit-clear-rtit-ctl": false,
+ "stibp-always-on": false,
+ "model": 113,
+ "movbe": true,
+ "nrip-save": true,
+ "ssse3": true,
+ "sse4a": true,
+ "kvm-msi-ext-dest-id": false,
+ "vmx-pause-exit": false,
+ "invpcid": false,
+ "sgx-debug": false,
+ "pdpe1gb": true,
+ "sgx-mode64": false,
+ "tsc-deadline": true,
+ "skip-l1dfl-vmentry": true,
+ "vmx-exit-load-perf-global-ctrl": false,
+ "fma": true,
+ "lam": false,
+ "cx16": true,
+ "de": true,
+ "fzrm": false,
+ "avx-ifma": false,
+ "stepping": 0,
+ "xsave": true,
+ "clflush": true,
+ "skinit": false,
+ "avx-vnni-int8": false,
+ "tsc": true,
+ "tce": false,
+ "flush-l1d": false,
+ "fpu": true,
+ "ds-cpl": false,
+ "ibs": false,
+ "fma4": false,
+ "vmx-exit-nosave-debugctl": false,
+ "sgx-kss": false,
+ "la57": false,
+ "vmx-invept": false,
+ "osvw": true,
+ "rfds-clear": false,
+ "apic": true,
+ "pmm": false,
+ "vmx-entry-noload-debugctl": false,
+ "vmx-eptad": false,
+ "spec-ctrl": false,
+ "vmx-posted-intr": false,
+ "vmx-apicv-register": false,
+ "tsc-adjust": true,
+ "vnmi": false,
+ "kvm-steal-time": true,
+ "psdp-no": false,
+ "vmx-any-errcode": false,
+ "avx512-vp2intersect": false,
+ "kvmclock": true,
+ "vmx-zero-len-inject": false,
+ "amx-complex": false,
+ "pschange-mc-no": true,
+ "v-vmsave-vmload": true,
+ "vmx-rdrand-exit": false,
+ "sgx-provisionkey": false,
+ "lwp": false,
+ "amd-ssbd": true,
+ "xop": false,
+ "ibpb": true,
+ "ibrs": false,
+ "avx": true,
+ "core-capability": false,
+ "vmx-invept-single-context": false,
+ "movdiri": false,
+ "acpi": false,
+ "avx512bw": false,
+ "ace2": false,
+ "fsgsbase": true,
+ "vmx-ept-2mb": false,
+ "vmx-ept-1gb": false,
+ "ht": false,
+ "vmx-io-exit": false,
+ "nx": true,
+ "pclmulqdq": true,
+ "mmxext": true,
+ "popcnt": true,
+ "vaes": false,
+ "serialize": false,
+ "movdir64b": false,
+ "xsaves": false,
+ "vmx-shadow-vmcs": false,
+ "lm": true,
+ "vmx-exit-save-preemption-timer": false,
+ "vmx-entry-load-pat": false,
+ "fsrm": false,
+ "fsrs": false,
+ "fsrc": false,
+ "sbdr-ssdp-no": false,
+ "vmx-entry-load-perf-global-ctrl": false,
+ "vmx-io-bitmap": false,
+ "umip": true,
+ "vmx-store-lma": false,
+ "vmx-movdr-exit": false,
+ "pse": true,
+ "avx2": true,
+ "avic": false,
+ "sep": true,
+ "virt-ssbd": true,
+ "vmx-cr3-load-noexit": false,
+ "nodeid-msr": false,
+ "md-clear": false,
+ "misalignsse": true,
+ "split-lock-detect": false,
+ "min-xlevel": 2147483681,
+ "bmi1": true,
+ "bmi2": true,
+ "kvm-pv-unhalt": true,
+ "tsc-scale": true,
+ "topoext": false,
+ "amd-stibp": true,
+ "vmx-preemption-timer": false,
+ "clflushopt": true,
+ "vmx-entry-load-pkrs": false,
+ "vmx-vnmi-pending": false,
+ "monitor": false,
+ "vmx-vintr-pending": false,
+ "avx512er": false,
+ "full-width-write": false,
+ "pmm-en": false,
+ "pcid": false,
+ "taa-no": false,
+ "arch-capabilities": true,
+ "vgif": true,
+ "vmx-secondary-ctls": false,
+ "vmx-xsaves": false,
+ "clzero": true,
+ "3dnow": false,
+ "erms": false,
+ "vmx-entry-ia32e-mode": false,
+ "lahf-lm": true,
+ "vpclmulqdq": false,
+ "vmx-ins-outs": false,
+ "fxsr-opt": true,
+ "xstore": false,
+ "rtm": false,
+ "kvm-hint-dedicated": false,
+ "sgx-aex-notify": false,
+ "amx-bf16": false,
+ "lmce": false,
+ "perfctr-nb": false,
+ "rdrand": true,
+ "rdseed": true,
+ "cmpccxadd": false,
+ "avx512-4vnniw": false,
+ "vme": true,
+ "vmx": false,
+ "dtes64": false,
+ "mtrr": true,
+ "rdtscp": true,
+ "xsaveerptr": true,
+ "pse36": true,
+ "kvm-pv-tlb-flush": true,
+ "vmx-activity-wait-sipi": false,
+ "tbm": false,
+ "wdt": false,
+ "vmx-rdpmc-exit": false,
+ "vmx-mtf": false,
+ "vmx-entry-load-efer": false,
+ "model-id": "AMD Ryzen 9 3900X 12-Core Processor ",
+ "sha-ni": true,
+ "fb-clear": false,
+ "vmx-exit-load-pkrs": false,
+ "abm": true,
+ "vmx-ept-advanced-exitinfo": false,
+ "vmx-enable-user-wait-pause": false,
+ "avx512pf": false,
+ "vmx-hlt-exit": false,
+ "xstore-en": false
+ }
+ }
+ },
+ "id": "libvirt-48"
+}
+
+{
+ "execute": "query-cpu-model-expansion",
+ "arguments": {
+ "type": "static",
+ "model": {
+ "name": "host",
+ "props": {
+ "migratable": false
+ }
+ }
+ },
+ "id": "libvirt-49"
+}
+
+{
+ "return": {
+ "model": {
+ "name": "base",
+ "props": {
+ "avx-ne-convert": false,
+ "vmx-entry-load-rtit-ctl": false,
+ "svme-addr-chk": true,
+ "lfence-always-serializing": true,
+ "cmov": true,
+ "ia64": false,
+ "ssb-no": false,
+ "aes": true,
+ "vmx-apicv-xapic": false,
+ "mmx": true,
+ "rdpid": true,
+ "arat": true,
+ "vmx-page-walk-4": false,
+ "vmx-page-walk-5": false,
+ "gfni": false,
+ "ibrs-all": false,
+ "vmx-desc-exit": false,
+ "pause-filter": true,
+ "mcdt-no": false,
+ "bus-lock-detect": false,
+ "xsavec": true,
+ "intel-pt": false,
+ "vmx-tsc-scaling": false,
+ "prefetchiti": false,
+ "vmx-cr8-store-exit": false,
+ "vmx-rdseed-exit": false,
+ "amx-fp16": false,
+ "vmx-eptp-switching": false,
+ "kvm-asyncpf": true,
+ "perfctr-core": true,
+ "mpx": false,
+ "auto-ibrs": false,
+ "pbe": false,
+ "avx512cd": false,
+ "decodeassists": false,
+ "vmx-exit-load-efer": false,
+ "vmx-exit-clear-bndcfgs": false,
+ "sse4.1": true,
+ "family": 23,
+ "intel-pt-lip": false,
+ "vmx-vmwrite-vmexit-fields": false,
+ "kvm-asyncpf-int": true,
+ "vmx-vnmi": false,
+ "vmx-true-ctls": false,
+ "vmx-ept-execonly": false,
+ "vmx-exit-save-efer": false,
+ "vmx-invept-all-context": false,
+ "wbnoinvd": true,
+ "avx512f": false,
+ "rfds-no": true,
+ "msr": true,
+ "mce": true,
+ "mca": true,
+ "xcrypt": false,
+ "sgx": false,
+ "vmx-exit-load-pat": false,
+ "vmx-intr-exit": false,
+ "min-level": 16,
+ "vmx-flexpriority": false,
+ "xgetbv1": true,
+ "cid": false,
+ "sgx-exinfo": false,
+ "amd-psfd": false,
+ "gds-no": true,
+ "ds": false,
+ "fxsr": true,
+ "avx512-fp16": false,
+ "avx512-bf16": false,
+ "vmx-cr8-load-exit": false,
+ "xsaveopt": true,
+ "arch-lbr": false,
+ "vmx-apicv-vid": false,
+ "vmx-exit-save-pat": false,
+ "xtpr": false,
+ "tsx-ctrl": false,
+ "vmx-ple": false,
+ "avx512vl": false,
+ "avx512-vpopcntdq": false,
+ "phe": false,
+ "extapic": false,
+ "3dnowprefetch": true,
+ "vmx-vmfunc": false,
+ "vmx-activity-shutdown": false,
+ "sgx1": false,
+ "sgx2": false,
+ "avx512vbmi2": false,
+ "cr8legacy": true,
+ "vmx-encls-exit": false,
+ "null-sel-clr-base": true,
+ "stibp": true,
+ "vmx-msr-bitmap": false,
+ "xcrypt-en": false,
+ "vmx-mwait-exit": false,
+ "vmx-pml": false,
+ "vmx-nmi-exit": false,
+ "amx-tile": false,
+ "vmx-invept-single-context-noglobals": false,
+ "pn": false,
+ "rsba": false,
+ "dca": false,
+ "vendor": "AuthenticAMD",
+ "vmx-unrestricted-guest": false,
+ "vmx-cr3-store-noexit": false,
+ "pku": false,
+ "pks": false,
+ "smx": false,
+ "cmp-legacy": true,
+ "avx512-4fmaps": false,
+ "vmcb-clean": true,
+ "hle": false,
+ "avx-vnni": false,
+ "3dnowext": false,
+ "amd-no-ssb": false,
+ "npt": true,
+ "sgxlc": false,
+ "rdctl-no": true,
+ "vmx-invvpid": false,
+ "clwb": true,
+ "lbrv": true,
+ "adx": true,
+ "ss": false,
+ "pni": true,
+ "tsx-ldtrk": false,
+ "svm-lock": false,
+ "smep": true,
+ "smap": true,
+ "pfthreshold": true,
+ "vmx-invpcid-exit": false,
+ "amx-int8": false,
+ "x2apic": true,
+ "avx512vbmi": false,
+ "avx512vnni": false,
+ "sgx-edeccssa": false,
+ "vmx-apicv-x2apic": false,
+ "kvm-pv-sched-yield": true,
+ "vmx-invlpg-exit": false,
+ "no-nested-data-bp": false,
+ "vmx-invvpid-all-context": false,
+ "vmx-activity-hlt": false,
+ "flushbyasid": true,
+ "f16c": true,
+ "vmx-exit-ack-intr": false,
+ "ace2-en": false,
+ "pae": true,
+ "pat": true,
+ "sse": true,
+ "phe-en": false,
+ "vmx-tsc-offset": false,
+ "kvm-nopiodelay": true,
+ "tm": false,
+ "fbsdp-no": false,
+ "kvmclock-stable-bit": true,
+ "vmx-rdtsc-exit": false,
+ "hypervisor": true,
+ "vmx-rdtscp-exit": false,
+ "mds-no": true,
+ "pcommit": false,
+ "vmx-vpid": false,
+ "syscall": true,
+ "kvm-asyncpf-vmexit": true,
+ "avx512dq": false,
+ "svm": true,
+ "invtsc": true,
+ "vmx-monitor-exit": false,
+ "sse2": true,
+ "ssbd": true,
+ "vmx-wbinvd-exit": false,
+ "est": false,
+ "kvm-poll-control": true,
+ "avx512ifma": false,
+ "tm2": false,
+ "kvm-pv-eoi": true,
+ "kvm-pv-ipi": true,
+ "cx8": true,
+ "vmx-invvpid-single-addr": false,
+ "waitpkg": false,
+ "cldemote": false,
+ "sgx-tokenkey": false,
+ "vmx-ept": false,
+ "pbrsb-no": false,
+ "xfd": false,
+ "kvm-mmu": false,
+ "sse4.2": true,
+ "pge": true,
+ "avx512bitalg": false,
+ "pdcm": false,
+ "vmx-entry-load-bndcfgs": false,
+ "vmx-exit-clear-rtit-ctl": false,
+ "stibp-always-on": false,
+ "model": 113,
+ "movbe": true,
+ "nrip-save": true,
+ "ssse3": true,
+ "sse4a": true,
+ "kvm-msi-ext-dest-id": false,
+ "vmx-pause-exit": false,
+ "invpcid": false,
+ "sgx-debug": false,
+ "pdpe1gb": true,
+ "sgx-mode64": false,
+ "tsc-deadline": true,
+ "skip-l1dfl-vmentry": true,
+ "vmx-exit-load-perf-global-ctrl": false,
+ "fma": true,
+ "lam": false,
+ "cx16": true,
+ "de": true,
+ "fzrm": false,
+ "avx-ifma": false,
+ "stepping": 0,
+ "xsave": true,
+ "clflush": true,
+ "skinit": false,
+ "avx-vnni-int8": false,
+ "tsc": true,
+ "tce": false,
+ "flush-l1d": false,
+ "fpu": true,
+ "ds-cpl": false,
+ "ibs": false,
+ "fma4": false,
+ "vmx-exit-nosave-debugctl": false,
+ "sgx-kss": false,
+ "la57": false,
+ "vmx-invept": false,
+ "osvw": true,
+ "rfds-clear": false,
+ "apic": true,
+ "pmm": false,
+ "vmx-entry-noload-debugctl": false,
+ "vmx-eptad": false,
+ "spec-ctrl": false,
+ "vmx-posted-intr": false,
+ "vmx-apicv-register": false,
+ "tsc-adjust": true,
+ "vnmi": false,
+ "kvm-steal-time": true,
+ "psdp-no": false,
+ "vmx-any-errcode": false,
+ "avx512-vp2intersect": false,
+ "kvmclock": true,
+ "vmx-zero-len-inject": false,
+ "amx-complex": false,
+ "pschange-mc-no": true,
+ "v-vmsave-vmload": true,
+ "vmx-rdrand-exit": false,
+ "sgx-provisionkey": false,
+ "lwp": false,
+ "amd-ssbd": true,
+ "xop": false,
+ "ibpb": true,
+ "ibrs": false,
+ "avx": true,
+ "core-capability": false,
+ "vmx-invept-single-context": false,
+ "movdiri": false,
+ "acpi": false,
+ "avx512bw": false,
+ "ace2": false,
+ "fsgsbase": true,
+ "vmx-ept-2mb": false,
+ "vmx-ept-1gb": false,
+ "ht": false,
+ "vmx-io-exit": false,
+ "nx": true,
+ "pclmulqdq": true,
+ "mmxext": true,
+ "popcnt": true,
+ "vaes": false,
+ "serialize": false,
+ "movdir64b": false,
+ "xsaves": false,
+ "vmx-shadow-vmcs": false,
+ "lm": true,
+ "vmx-exit-save-preemption-timer": false,
+ "vmx-entry-load-pat": false,
+ "fsrm": false,
+ "fsrs": false,
+ "fsrc": false,
+ "sbdr-ssdp-no": false,
+ "vmx-entry-load-perf-global-ctrl": false,
+ "vmx-io-bitmap": false,
+ "umip": true,
+ "vmx-store-lma": false,
+ "vmx-movdr-exit": false,
+ "pse": true,
+ "avx2": true,
+ "avic": false,
+ "sep": true,
+ "virt-ssbd": true,
+ "vmx-cr3-load-noexit": false,
+ "nodeid-msr": false,
+ "md-clear": false,
+ "misalignsse": true,
+ "split-lock-detect": false,
+ "min-xlevel": 2147483681,
+ "bmi1": true,
+ "bmi2": true,
+ "kvm-pv-unhalt": true,
+ "tsc-scale": true,
+ "topoext": false,
+ "amd-stibp": true,
+ "vmx-preemption-timer": false,
+ "clflushopt": true,
+ "vmx-entry-load-pkrs": false,
+ "vmx-vnmi-pending": false,
+ "monitor": false,
+ "vmx-vintr-pending": false,
+ "avx512er": false,
+ "full-width-write": false,
+ "pmm-en": false,
+ "pcid": false,
+ "taa-no": false,
+ "arch-capabilities": true,
+ "vgif": true,
+ "vmx-secondary-ctls": false,
+ "vmx-xsaves": false,
+ "clzero": true,
+ "3dnow": false,
+ "erms": false,
+ "vmx-entry-ia32e-mode": false,
+ "lahf-lm": true,
+ "vpclmulqdq": false,
+ "vmx-ins-outs": false,
+ "fxsr-opt": true,
+ "xstore": false,
+ "rtm": false,
+ "kvm-hint-dedicated": false,
+ "sgx-aex-notify": false,
+ "amx-bf16": false,
+ "lmce": false,
+ "perfctr-nb": false,
+ "rdrand": true,
+ "rdseed": true,
+ "cmpccxadd": false,
+ "avx512-4vnniw": false,
+ "vme": true,
+ "vmx": false,
+ "dtes64": false,
+ "mtrr": true,
+ "rdtscp": true,
+ "xsaveerptr": true,
+ "pse36": true,
+ "kvm-pv-tlb-flush": true,
+ "vmx-activity-wait-sipi": false,
+ "tbm": false,
+ "wdt": false,
+ "vmx-rdpmc-exit": false,
+ "vmx-mtf": false,
+ "vmx-entry-load-efer": false,
+ "model-id": "AMD Ryzen 9 3900X 12-Core Processor ",
+ "sha-ni": true,
+ "fb-clear": false,
+ "vmx-exit-load-pkrs": false,
+ "abm": true,
+ "vmx-ept-advanced-exitinfo": false,
+ "vmx-enable-user-wait-pause": false,
+ "avx512pf": false,
+ "vmx-hlt-exit": false,
+ "xstore-en": false
+ }
+ }
+ },
+ "id": "libvirt-49"
+}
+
+{
+ "execute": "query-cpu-model-expansion",
+ "arguments": {
+ "type": "full",
+ "model": {
+ "name": "host",
+ "props": {
+ "migratable": false,
+ "hv-passthrough": true
+ }
+ }
+ },
+ "id": "libvirt-50"
+}
+
+{
+ "return": {
+ "model": {
+ "name": "host",
+ "props": {
+ "avx-ne-convert": false,
+ "vmx-entry-load-rtit-ctl": false,
+ "phys-bits": 0,
+ "core-id": -1,
+ "svme-addr-chk": true,
+ "xlevel": 2147483681,
+ "lfence-always-serializing": true,
+ "cmov": true,
+ "ia64": false,
+ "hv-version-id-minor": 0,
+ "ssb-no": false,
+ "aes": true,
+ "vmx-apicv-xapic": false,
+ "kvm-pv-enforce-cpuid": false,
+ "mmx": true,
+ "arat": true,
+ "rdpid": true,
+ "vmx-page-walk-4": false,
+ "vmx-page-walk-5": false,
+ "vmx-desc-exit": false,
+ "gfni": false,
+ "ibrs-all": false,
+ "pause-filter": true,
+ "mcdt-no": false,
+ "bus-lock-detect": false,
+ "xsavec": true,
+ "intel-pt": false,
+ "vmx-tsc-scaling": false,
+ "prefetchiti": false,
+ "vmx-cr8-store-exit": false,
+ "hv-xmm-input": true,
+ "hv-frequencies": true,
+ "tsc-frequency": 0,
+ "vmx-rdseed-exit": false,
+ "guest-phys-bits": 4294967295,
+ "xd": true,
+ "x-intel-pt-auto-level": true,
+ "amx-fp16": false,
+ "hv-vendor-id": "Linux KVM Hv",
+ "vmx-eptp-switching": false,
+ "hv-syndbg": true,
+ "kvm-asyncpf": true,
+ "kvm_asyncpf": true,
+ "perfctr-core": true,
+ "perfctr_core": true,
+ "auto-ibrs": false,
+ "mpx": false,
+ "avx512cd": false,
+ "pbe": false,
+ "decodeassists": false,
+ "vmx-exit-load-efer": false,
+ "vmx-exit-clear-bndcfgs": false,
+ "sse4.1": true,
+ "sse4-1": true,
+ "sse4_1": true,
+ "family": 23,
+ "legacy-cache": true,
+ "intel-pt-lip": false,
+ "vmx-vmwrite-vmexit-fields": false,
+ "vmx-vnmi": false,
+ "kvm-asyncpf-int": true,
+ "vmx-true-ctls": false,
+ "host-phys-bits-limit": 0,
+ "vmx-ept-execonly": false,
+ "vmx-exit-save-efer": false,
+ "vmx-invept-all-context": false,
+ "vmware-cpuid-freq": true,
+ "wbnoinvd": true,
+ "avx512f": false,
+ "rfds-no": true,
+ "xcrypt": false,
+ "hv-runtime": true,
+ "hv-stimer-direct": true,
+ "mce": true,
+ "mca": true,
+ "msr": true,
+ "sgx": false,
+ "thread-id": -1,
+ "vmx-exit-load-pat": false,
+ "vmx-intr-exit": false,
+ "min-level": 16,
+ "vmx-flexpriority": false,
+ "legacy-multi-node": false,
+ "xgetbv1": true,
+ "cid": false,
+ "hv-relaxed": true,
+ "sgx-exinfo": false,
+ "amd-psfd": false,
+ "gds-no": true,
+ "avx512-bf16": false,
+ "avx512-fp16": false,
+ "ds": false,
+ "hv-crash": true,
+ "fxsr": true,
+ "vmx-cr8-load-exit": false,
+ "hv-version-id-sbranch": 0,
+ "hv-version-id-snumber": 0,
+ "xsaveopt": true,
+ "arch-lbr": false,
+ "vmx-apicv-vid": false,
+ "vmx-exit-save-pat": false,
+ "tsx-ctrl": false,
+ "xtpr": false,
+ "vmx-ple": false,
+ "hv-evmcs": false,
+ "avx512-vpopcntdq": false,
+ "hv-version-id-spack": 0,
+ "phe": false,
+ "avx512vl": false,
+ "extapic": false,
+ "vmx-vmfunc": false,
+ "3dnowprefetch": true,
+ "vmx-activity-shutdown": false,
+ "sgx1": false,
+ "sgx2": false,
+ "avx512vbmi2": false,
+ "cr8legacy": true,
+ "vmx-encls-exit": false,
+ "null-sel-clr-base": true,
+ "stibp": true,
+ "vmx-msr-bitmap": false,
+ "cpuid-0xb": true,
+ "xcrypt-en": false,
+ "vmx-mwait-exit": false,
+ "kvm_pv_eoi": true,
+ "vmx-pml": false,
+ "apic-id": 4294967295,
+ "vmx-nmi-exit": false,
+ "vmx-invept-single-context-noglobals": false,
+ "amx-tile": false,
+ "pn": false,
+ "rsba": false,
+ "dca": false,
+ "vmx-unrestricted-guest": false,
+ "vendor": "AuthenticAMD",
+ "hv-ipi": true,
+ "vmx-cr3-store-noexit": false,
+ "pku": false,
+ "pks": false,
+ "smx": false,
+ "cmp-legacy": true,
+ "cmp_legacy": true,
+ "node-id": -1,
+ "avx512-4fmaps": false,
+ "vmcb-clean": true,
+ "vmcb_clean": true,
+ "hle": false,
+ "amd-no-ssb": false,
+ "3dnowext": false,
+ "avx-vnni": false,
+ "npt": true,
+ "sgxlc": false,
+ "rdctl-no": true,
+ "vmx-invvpid": false,
+ "x-l1-cache-per-thread": true,
+ "memory": "/machine/unattached/system[0]",
+ "clwb": true,
+ "lbrv": true,
+ "adx": true,
+ "ss": false,
+ "pni": true,
+ "tsx-ldtrk": false,
+ "host-cache-info": false,
+ "svm-lock": false,
+ "svm_lock": false,
+ "pfthreshold": true,
+ "smap": true,
+ "smep": true,
+ "vmx-invpcid-exit": false,
+ "amx-int8": false,
+ "x2apic": true,
+ "sgx-edeccssa": false,
+ "avx512vnni": false,
+ "avx512vbmi": false,
+ "vmx-apicv-x2apic": false,
+ "hv-stimer": true,
+ "kvm-pv-sched-yield": true,
+ "vmx-invlpg-exit": false,
+ "x-hv-synic-kvm-only": false,
+ "no-nested-data-bp": false,
+ "vmx-invvpid-all-context": false,
+ "i64": true,
+ "vmx-activity-hlt": false,
+ "flushbyasid": true,
+ "f16c": true,
+ "vmx-exit-ack-intr": false,
+ "ace2-en": false,
+ "pae": true,
+ "pat": true,
+ "sse": true,
+ "die-id": -1,
+ "vmx-tsc-offset": false,
+ "phe-en": false,
+ "kvm-nopiodelay": true,
+ "kvm_nopiodelay": true,
+ "tm": false,
+ "hv-enforce-cpuid": false,
+ "fbsdp-no": false,
+ "kvmclock-stable-bit": true,
+ "vmx-rdtsc-exit": false,
+ "hypervisor": true,
+ "vmx-rdtscp-exit": false,
+ "socket-id": -1,
+ "mds-no": true,
+ "pcommit": false,
+ "vmx-vpid": false,
+ "syscall": true,
+ "kvm-asyncpf-vmexit": true,
+ "level": 16,
+ "avx512dq": false,
+ "x-migrate-smi-count": true,
+ "svm": true,
+ "full-cpuid-auto-level": true,
+ "hv-avic": true,
+ "hv-reset": true,
+ "invtsc": true,
+ "vmx-monitor-exit": false,
+ "sse2": true,
+ "vmx-wbinvd-exit": false,
+ "ssbd": true,
+ "sse3": true,
+ "est": false,
+ "kvm-poll-control": true,
+ "kvm_poll_control": true,
+ "avx512ifma": false,
+ "tm2": false,
+ "start-powered-off": false,
+ "kvm-pv-eoi": true,
+ "kvm-pv-ipi": true,
+ "hv-emsr-bitmap": true,
+ "cx8": true,
+ "vmx-invvpid-single-addr": false,
+ "waitpkg": false,
+ "sgx-tokenkey": false,
+ "cldemote": false,
+ "vmx-ept": false,
+ "pbrsb-no": false,
+ "hv-tlbflush-direct": true,
+ "xfd": false,
+ "hv-reenlightenment": true,
+ "kvm-mmu": false,
+ "kvm_mmu": false,
+ "sse4.2": true,
+ "sse4-2": true,
+ "sse4_2": true,
+ "pge": true,
+ "fill-mtrr-mask": true,
+ "avx512bitalg": false,
+ "vmx-entry-load-bndcfgs": false,
+ "pdcm": false,
+ "nodeid_msr": false,
+ "vmx-exit-clear-rtit-ctl": false,
+ "stibp-always-on": false,
+ "hv-apicv": true,
+ "model": 113,
+ "movbe": true,
+ "nrip-save": true,
+ "nrip_save": true,
+ "vmx-pause-exit": false,
+ "ssse3": true,
+ "sse4a": true,
+ "kvm-msi-ext-dest-id": false,
+ "kvm_pv_unhalt": true,
+ "sgx-debug": false,
+ "invpcid": false,
+ "pdpe1gb": true,
+ "sgx-mode64": false,
+ "tsc-deadline": true,
+ "skip-l1dfl-vmentry": true,
+ "vmx-exit-load-perf-global-ctrl": false,
+ "fma": true,
+ "lam": false,
+ "cx16": true,
+ "fzrm": false,
+ "de": true,
+ "avx-ifma": false,
+ "hv-version-id-build": 14393,
+ "enforce": false,
+ "stepping": 0,
+ "xsave": true,
+ "lbr-fmt": 18446744073709551552,
+ "lbr_fmt": 18446744073709551552,
+ "clflush": true,
+ "skinit": false,
+ "avx-vnni-int8": false,
+ "tsc": true,
+ "tce": false,
+ "flush-l1d": false,
+ "kvm_asyncpf_int": true,
+ "fpu": true,
+ "ds-cpl": false,
+ "ibs": false,
+ "ds_cpl": false,
+ "fma4": false,
+ "host-phys-bits": true,
+ "sgx-kss": false,
+ "vmx-exit-nosave-debugctl": false,
+ "hv-version-id-major": 10,
+ "vmx-invept": false,
+ "la57": false,
+ "osvw": true,
+ "migratable": false,
+ "rfds-clear": false,
+ "check": true,
+ "hv-spinlocks": 4095,
+ "vmx-entry-noload-debugctl": false,
+ "vmx-eptad": false,
+ "pmu": true,
+ "pmm": false,
+ "apic": true,
+ "spec-ctrl": false,
+ "vmx-posted-intr": false,
+ "vmx-apicv-register": false,
+ "min-xlevel2": 0,
+ "vnmi": false,
+ "tsc-adjust": true,
+ "tsc_adjust": true,
+ "kvm-steal-time": true,
+ "psdp-no": false,
+ "kvm_steal_time": true,
+ "vmx-any-errcode": false,
+ "avx512-vp2intersect": false,
+ "kvmclock": true,
+ "vmx-zero-len-inject": false,
+ "amx-complex": false,
+ "l3-cache": true,
+ "pschange-mc-no": true,
+ "v-vmsave-vmload": true,
+ "sgx-provisionkey": false,
+ "vmx-rdrand-exit": false,
+ "lwp": false,
+ "hv-passthrough": true,
+ "amd-ssbd": true,
+ "ibpb": true,
+ "ibrs": false,
+ "xop": false,
+ "core-capability": false,
+ "avx": true,
+ "vmx-invept-single-context": false,
+ "movdiri": false,
+ "avx512bw": false,
+ "acpi": false,
+ "ace2": false,
+ "fsgsbase": true,
+ "hv-vapic": true,
+ "vmx-ept-2mb": false,
+ "vmx-ept-1gb": false,
+ "ht": false,
+ "vmx-io-exit": false,
+ "nx": true,
+ "pclmulqdq": true,
+ "mmxext": true,
+ "popcnt": true,
+ "vaes": false,
+ "serialize": false,
+ "xsaves": false,
+ "movdir64b": false,
+ "vmx-shadow-vmcs": false,
+ "tcg-cpuid": true,
+ "lm": true,
+ "vmx-exit-save-preemption-timer": false,
+ "vmx-entry-load-pat": false,
+ "fsrs": false,
+ "fsrm": false,
+ "fsrc": false,
+ "sbdr-ssdp-no": false,
+ "vmx-entry-load-perf-global-ctrl": false,
+ "vmx-io-bitmap": false,
+ "vmx-store-lma": false,
+ "umip": true,
+ "vmx-movdr-exit": false,
+ "avx2": true,
+ "pse": true,
+ "avic": false,
+ "sep": true,
+ "pclmuldq": true,
+ "vmx-cr3-load-noexit": false,
+ "virt-ssbd": true,
+ "x-hv-max-vps": 4096,
+ "nodeid-msr": false,
+ "md-clear": false,
+ "split-lock-detect": false,
+ "kvm": true,
+ "misalignsse": true,
+ "min-xlevel": 2147483681,
+ "realized": false,
+ "kvm-pv-unhalt": true,
+ "bmi2": true,
+ "bmi1": true,
+ "xen-vapic": false,
+ "tsc-scale": true,
+ "tsc_scale": true,
+ "topoext": false,
+ "amd-stibp": true,
+ "hv-vpindex": true,
+ "hv-no-nonarch-coresharing": "off",
+ "ucode-rev": 0,
+ "vmx-preemption-timer": false,
+ "xlevel2": 0,
+ "vmx-entry-load-pkrs": false,
+ "clflushopt": true,
+ "vmx-vnmi-pending": false,
+ "kvm-no-smi-migration": false,
+ "monitor": false,
+ "vmx-vintr-pending": false,
+ "avx512er": false,
+ "full-width-write": false,
+ "pmm-en": false,
+ "taa-no": false,
+ "pcid": false,
+ "vgif": true,
+ "vmx-secondary-ctls": false,
+ "vmx-xsaves": false,
+ "arch-capabilities": true,
+ "x-vendor-cpuid-only": true,
+ "clzero": true,
+ "3dnow": false,
+ "erms": false,
+ "x-force-features": false,
+ "vmx-entry-ia32e-mode": false,
+ "lahf-lm": true,
+ "lahf_lm": true,
+ "vmx-ins-outs": false,
+ "vpclmulqdq": false,
+ "xstore": false,
+ "fxsr-opt": true,
+ "hv-synic": true,
+ "fxsr_opt": true,
+ "sgx-aex-notify": false,
+ "rtm": false,
+ "kvm-hint-dedicated": false,
+ "amx-bf16": false,
+ "lmce": false,
+ "hv-time": true,
+ "perfctr-nb": false,
+ "perfctr_nb": false,
+ "hv-tlbflush": true,
+ "ffxsr": true,
+ "rdrand": true,
+ "rdseed": true,
+ "cmpccxadd": false,
+ "avx512-4vnniw": false,
+ "vme": true,
+ "vmx": false,
+ "dtes64": false,
+ "mtrr": true,
+ "rdtscp": true,
+ "xsaveerptr": true,
+ "pse36": true,
+ "kvm-pv-tlb-flush": true,
+ "vmx-activity-wait-sipi": false,
+ "module-id": -1,
+ "tbm": false,
+ "vmx-rdpmc-exit": false,
+ "wdt": false,
+ "vmx-entry-load-efer": false,
+ "level-func7": 0,
+ "vmx-mtf": false,
+ "hv-tlbflush-ext": true,
+ "pause_filter": true,
+ "model-id": "AMD Ryzen 9 3900X 12-Core Processor ",
+ "sha-ni": true,
+ "fb-clear": false,
+ "vmx-exit-load-pkrs": false,
+ "abm": true,
+ "vmx-ept-advanced-exitinfo": false,
+ "vmx-enable-user-wait-pause": false,
+ "avx512pf": false,
+ "vmx-hlt-exit": false,
+ "xstore-en": false
+ }
+ }
+ },
+ "id": "libvirt-50"
+}
+
+{
+ "execute": "qmp_capabilities",
+ "id": "libvirt-1"
+}
+
+{
+ "return": {},
+ "id": "libvirt-1"
+}
+
+{
+ "execute": "query-cpu-definitions",
+ "id": "libvirt-2"
+}
+
+{
+ "return": [
+ {
+ "name": "max",
+ "typename": "max-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": false,
+ "deprecated": false
+ },
+ {
+ "name": "host",
+ "typename": "host-x86_64-cpu",
+ "unavailable-features": [
+ "kvm"
+ ],
+ "static": false,
+ "migration-safe": false,
+ "deprecated": false
+ },
+ {
+ "name": "base",
+ "typename": "base-x86_64-cpu",
+ "unavailable-features": [],
+ "static": true,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "qemu64-v1",
+ "typename": "qemu64-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "qemu64",
+ "typename": "qemu64-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "qemu64-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "qemu32-v1",
+ "typename": "qemu32-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "qemu32",
+ "typename": "qemu32-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "qemu32-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "phenom-v1",
+ "typename": "phenom-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "phenom",
+ "typename": "phenom-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt"
+ ],
+ "alias-of": "phenom-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "pentium3-v1",
+ "typename": "pentium3-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "pentium3",
+ "typename": "pentium3-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "pentium3-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "pentium2-v1",
+ "typename": "pentium2-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "pentium2",
+ "typename": "pentium2-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "pentium2-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "pentium-v1",
+ "typename": "pentium-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "pentium",
+ "typename": "pentium-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "pentium-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "n270-v1",
+ "typename": "n270-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "n270",
+ "typename": "n270-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "n270-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "kvm64-v1",
+ "typename": "kvm64-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "kvm64",
+ "typename": "kvm64-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "kvm64-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "kvm32-v1",
+ "typename": "kvm32-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "kvm32",
+ "typename": "kvm32-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "kvm32-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "coreduo-v1",
+ "typename": "coreduo-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "coreduo",
+ "typename": "coreduo-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "coreduo-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "core2duo-v1",
+ "typename": "core2duo-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "core2duo",
+ "typename": "core2duo-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "core2duo-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "athlon-v1",
+ "typename": "athlon-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "athlon",
+ "typename": "athlon-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "athlon-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Westmere-v2",
+ "typename": "Westmere-v2-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Westmere-v1",
+ "typename": "Westmere-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Westmere-IBRS",
+ "typename": "Westmere-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "alias-of": "Westmere-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Westmere",
+ "typename": "Westmere-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Westmere-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Snowridge-v4",
+ "typename": "Snowridge-v4-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Snowridge-v3",
+ "typename": "Snowridge-v3-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "arch-capabilities",
+ "core-capability",
+ "ssbd",
+ "xsavec",
+ "xsaves",
+ "split-lock-detect"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Snowridge-v2",
+ "typename": "Snowridge-v2-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "arch-capabilities",
+ "core-capability",
+ "ssbd",
+ "xsavec",
+ "split-lock-detect"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Snowridge-v1",
+ "typename": "Snowridge-v1-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "arch-capabilities",
+ "core-capability",
+ "ssbd",
+ "xsavec",
+ "split-lock-detect"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Snowridge",
+ "typename": "Snowridge-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "arch-capabilities",
+ "core-capability",
+ "ssbd",
+ "xsavec",
+ "split-lock-detect"
+ ],
+ "alias-of": "Snowridge-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server-v5",
+ "typename": "Skylake-Server-v5-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "spec-ctrl",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server-v4",
+ "typename": "Skylake-Server-v4-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "spec-ctrl",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server-v3",
+ "typename": "Skylake-Server-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "spec-ctrl",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server-v2",
+ "typename": "Skylake-Server-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "spec-ctrl",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server-v1",
+ "typename": "Skylake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server-noTSX-IBRS",
+ "typename": "Skylake-Server-noTSX-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "spec-ctrl",
+ "xsavec"
+ ],
+ "alias-of": "Skylake-Server-v3",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server-IBRS",
+ "typename": "Skylake-Server-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "spec-ctrl",
+ "xsavec"
+ ],
+ "alias-of": "Skylake-Server-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Server",
+ "typename": "Skylake-Server-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "xsavec"
+ ],
+ "alias-of": "Skylake-Server-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Client-v4",
+ "typename": "Skylake-Client-v4-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "spec-ctrl",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Client-v3",
+ "typename": "Skylake-Client-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "spec-ctrl",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Client-v2",
+ "typename": "Skylake-Client-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "spec-ctrl",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Client-v1",
+ "typename": "Skylake-Client-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Client-noTSX-IBRS",
+ "typename": "Skylake-Client-noTSX-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "spec-ctrl",
+ "xsavec"
+ ],
+ "alias-of": "Skylake-Client-v3",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Client-IBRS",
+ "typename": "Skylake-Client-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "spec-ctrl",
+ "xsavec"
+ ],
+ "alias-of": "Skylake-Client-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Skylake-Client",
+ "typename": "Skylake-Client-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "xsavec"
+ ],
+ "alias-of": "Skylake-Client-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SierraForest-v1",
+ "typename": "SierraForest-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "gfni",
+ "vpclmulqdq",
+ "bus-lock-detect",
+ "serialize",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "avx-vnni",
+ "avx-ifma",
+ "xsavec",
+ "xsaves",
+ "avx-vnni-int8",
+ "avx-ne-convert",
+ "mcdt-no"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SierraForest",
+ "typename": "SierraForest-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "gfni",
+ "vpclmulqdq",
+ "bus-lock-detect",
+ "serialize",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "avx-vnni",
+ "avx-ifma",
+ "xsavec",
+ "xsaves",
+ "avx-vnni-int8",
+ "avx-ne-convert",
+ "mcdt-no"
+ ],
+ "alias-of": "SierraForest-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SapphireRapids-v3",
+ "typename": "SapphireRapids-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "tsc-adjust",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "bus-lock-detect",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "serialize",
+ "tsx-ldtrk",
+ "amx-bf16",
+ "avx512-fp16",
+ "amx-tile",
+ "amx-int8",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "avx-vnni",
+ "avx512-bf16",
+ "xsavec",
+ "xsaves",
+ "xfd"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SapphireRapids-v2",
+ "typename": "SapphireRapids-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "bus-lock-detect",
+ "serialize",
+ "tsx-ldtrk",
+ "amx-bf16",
+ "avx512-fp16",
+ "amx-tile",
+ "amx-int8",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "avx-vnni",
+ "avx512-bf16",
+ "xsavec",
+ "xsaves",
+ "xfd"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SapphireRapids-v1",
+ "typename": "SapphireRapids-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "bus-lock-detect",
+ "serialize",
+ "tsx-ldtrk",
+ "amx-bf16",
+ "avx512-fp16",
+ "amx-tile",
+ "amx-int8",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "avx-vnni",
+ "avx512-bf16",
+ "xsavec",
+ "xsaves",
+ "xfd"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SapphireRapids",
+ "typename": "SapphireRapids-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "bus-lock-detect",
+ "serialize",
+ "tsx-ldtrk",
+ "amx-bf16",
+ "avx512-fp16",
+ "amx-tile",
+ "amx-int8",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "avx-vnni",
+ "avx512-bf16",
+ "xsavec",
+ "xsaves",
+ "xfd"
+ ],
+ "alias-of": "SapphireRapids-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SandyBridge-v2",
+ "typename": "SandyBridge-v2-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SandyBridge-v1",
+ "typename": "SandyBridge-v1-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SandyBridge-IBRS",
+ "typename": "SandyBridge-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "spec-ctrl"
+ ],
+ "alias-of": "SandyBridge-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "SandyBridge",
+ "typename": "SandyBridge-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline"
+ ],
+ "alias-of": "SandyBridge-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Penryn-v1",
+ "typename": "Penryn-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Penryn",
+ "typename": "Penryn-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Penryn-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G5-v1",
+ "typename": "Opteron_G5-v1-x86_64-cpu",
+ "unavailable-features": [
+ "misalignsse",
+ "xop",
+ "fma4",
+ "tbm",
+ "nrip-save"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G5",
+ "typename": "Opteron_G5-x86_64-cpu",
+ "unavailable-features": [
+ "misalignsse",
+ "xop",
+ "fma4",
+ "tbm",
+ "nrip-save"
+ ],
+ "alias-of": "Opteron_G5-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G4-v1",
+ "typename": "Opteron_G4-v1-x86_64-cpu",
+ "unavailable-features": [
+ "misalignsse",
+ "xop",
+ "fma4",
+ "nrip-save"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G4",
+ "typename": "Opteron_G4-x86_64-cpu",
+ "unavailable-features": [
+ "misalignsse",
+ "xop",
+ "fma4",
+ "nrip-save"
+ ],
+ "alias-of": "Opteron_G4-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G3-v1",
+ "typename": "Opteron_G3-v1-x86_64-cpu",
+ "unavailable-features": [
+ "misalignsse"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G3",
+ "typename": "Opteron_G3-x86_64-cpu",
+ "unavailable-features": [
+ "misalignsse"
+ ],
+ "alias-of": "Opteron_G3-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G2-v1",
+ "typename": "Opteron_G2-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G2",
+ "typename": "Opteron_G2-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Opteron_G2-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G1-v1",
+ "typename": "Opteron_G1-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Opteron_G1",
+ "typename": "Opteron_G1-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Opteron_G1-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Nehalem-v2",
+ "typename": "Nehalem-v2-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Nehalem-v1",
+ "typename": "Nehalem-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Nehalem-IBRS",
+ "typename": "Nehalem-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "alias-of": "Nehalem-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Nehalem",
+ "typename": "Nehalem-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Nehalem-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "KnightsMill-v1",
+ "typename": "KnightsMill-v1-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "avx512f",
+ "avx512pf",
+ "avx512er",
+ "avx512cd",
+ "avx512-vpopcntdq",
+ "avx512-4vnniw",
+ "avx512-4fmaps"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "KnightsMill",
+ "typename": "KnightsMill-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "avx512f",
+ "avx512pf",
+ "avx512er",
+ "avx512cd",
+ "avx512-vpopcntdq",
+ "avx512-4vnniw",
+ "avx512-4fmaps"
+ ],
+ "alias-of": "KnightsMill-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "IvyBridge-v2",
+ "typename": "IvyBridge-v2-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "IvyBridge-v1",
+ "typename": "IvyBridge-v1-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "IvyBridge-IBRS",
+ "typename": "IvyBridge-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "spec-ctrl"
+ ],
+ "alias-of": "IvyBridge-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "IvyBridge",
+ "typename": "IvyBridge-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline"
+ ],
+ "alias-of": "IvyBridge-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-v7",
+ "typename": "Icelake-Server-v7-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-v6",
+ "typename": "Icelake-Server-v6-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-v5",
+ "typename": "Icelake-Server-v5-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-v4",
+ "typename": "Icelake-Server-v4-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-v3",
+ "typename": "Icelake-Server-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-v2",
+ "typename": "Icelake-Server-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "ssbd",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-v1",
+ "typename": "Icelake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "ssbd",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server-noTSX",
+ "typename": "Icelake-Server-noTSX-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "ssbd",
+ "xsavec"
+ ],
+ "alias-of": "Icelake-Server-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Icelake-Server",
+ "typename": "Icelake-Server-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "ssbd",
+ "xsavec"
+ ],
+ "alias-of": "Icelake-Server-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell-v4",
+ "typename": "Haswell-v4-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell-v3",
+ "typename": "Haswell-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell-v2",
+ "typename": "Haswell-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell-v1",
+ "typename": "Haswell-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell-noTSX-IBRS",
+ "typename": "Haswell-noTSX-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "alias-of": "Haswell-v4",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell-noTSX",
+ "typename": "Haswell-noTSX-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid"
+ ],
+ "alias-of": "Haswell-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell-IBRS",
+ "typename": "Haswell-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "alias-of": "Haswell-v3",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Haswell",
+ "typename": "Haswell-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm"
+ ],
+ "alias-of": "Haswell-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "GraniteRapids-v1",
+ "typename": "GraniteRapids-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "bus-lock-detect",
+ "serialize",
+ "tsx-ldtrk",
+ "amx-bf16",
+ "avx512-fp16",
+ "amx-tile",
+ "amx-int8",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "avx-vnni",
+ "avx512-bf16",
+ "amx-fp16",
+ "xsavec",
+ "xsaves",
+ "xfd",
+ "prefetchiti",
+ "mcdt-no"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "GraniteRapids",
+ "typename": "GraniteRapids-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "bus-lock-detect",
+ "serialize",
+ "tsx-ldtrk",
+ "amx-bf16",
+ "avx512-fp16",
+ "amx-tile",
+ "amx-int8",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "avx-vnni",
+ "avx512-bf16",
+ "amx-fp16",
+ "xsavec",
+ "xsaves",
+ "xfd",
+ "prefetchiti",
+ "mcdt-no"
+ ],
+ "alias-of": "GraniteRapids-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-v4",
+ "typename": "EPYC-v4-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "perfctr-core",
+ "clzero",
+ "ibpb",
+ "nrip-save",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-v3",
+ "typename": "EPYC-v3-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "perfctr-core",
+ "clzero",
+ "ibpb",
+ "nrip-save",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-v2",
+ "typename": "EPYC-v2-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "ibpb",
+ "nrip-save",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-v1",
+ "typename": "EPYC-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "nrip-save",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Rome-v4",
+ "typename": "EPYC-Rome-v4-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "perfctr-core",
+ "clzero",
+ "ibpb",
+ "ibrs",
+ "amd-stibp",
+ "amd-ssbd",
+ "nrip-save",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Rome-v3",
+ "typename": "EPYC-Rome-v3-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "perfctr-core",
+ "clzero",
+ "ibpb",
+ "ibrs",
+ "amd-stibp",
+ "amd-ssbd",
+ "nrip-save",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Rome-v2",
+ "typename": "EPYC-Rome-v2-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "perfctr-core",
+ "clzero",
+ "ibpb",
+ "ibrs",
+ "amd-stibp",
+ "amd-ssbd",
+ "nrip-save",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Rome-v1",
+ "typename": "EPYC-Rome-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "perfctr-core",
+ "clzero",
+ "ibpb",
+ "amd-stibp",
+ "nrip-save",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Rome",
+ "typename": "EPYC-Rome-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "perfctr-core",
+ "clzero",
+ "ibpb",
+ "amd-stibp",
+ "nrip-save",
+ "xsavec",
+ "xsaves"
+ ],
+ "alias-of": "EPYC-Rome-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Milan-v2",
+ "typename": "EPYC-Milan-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "invpcid",
+ "vpclmulqdq",
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "perfctr-core",
+ "clzero",
+ "ibpb",
+ "ibrs",
+ "amd-stibp",
+ "stibp-always-on",
+ "amd-ssbd",
+ "amd-psfd",
+ "no-nested-data-bp",
+ "lfence-always-serializing",
+ "null-sel-clr-base",
+ "nrip-save",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Milan-v1",
+ "typename": "EPYC-Milan-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "invpcid",
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "perfctr-core",
+ "clzero",
+ "ibpb",
+ "ibrs",
+ "amd-stibp",
+ "amd-ssbd",
+ "nrip-save",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Milan",
+ "typename": "EPYC-Milan-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "invpcid",
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "perfctr-core",
+ "clzero",
+ "ibpb",
+ "ibrs",
+ "amd-stibp",
+ "amd-ssbd",
+ "nrip-save",
+ "xsavec",
+ "xsaves"
+ ],
+ "alias-of": "EPYC-Milan-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-IBPB",
+ "typename": "EPYC-IBPB-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "ibpb",
+ "nrip-save",
+ "xsavec"
+ ],
+ "alias-of": "EPYC-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Genoa-v1",
+ "typename": "EPYC-Genoa-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "avx512-bf16",
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "perfctr-core",
+ "clzero",
+ "ibpb",
+ "ibrs",
+ "amd-stibp",
+ "stibp-always-on",
+ "amd-ssbd",
+ "amd-psfd",
+ "no-nested-data-bp",
+ "lfence-always-serializing",
+ "null-sel-clr-base",
+ "auto-ibrs",
+ "nrip-save",
+ "vnmi",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC-Genoa",
+ "typename": "EPYC-Genoa-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512ifma",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "avx512vbmi2",
+ "gfni",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "avx512-bf16",
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "perfctr-core",
+ "clzero",
+ "ibpb",
+ "ibrs",
+ "amd-stibp",
+ "stibp-always-on",
+ "amd-ssbd",
+ "amd-psfd",
+ "no-nested-data-bp",
+ "lfence-always-serializing",
+ "null-sel-clr-base",
+ "auto-ibrs",
+ "nrip-save",
+ "vnmi",
+ "xsavec",
+ "xsaves"
+ ],
+ "alias-of": "EPYC-Genoa-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "EPYC",
+ "typename": "EPYC-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "nrip-save",
+ "xsavec"
+ ],
+ "alias-of": "EPYC-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Dhyana-v2",
+ "typename": "Dhyana-v2-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "ibpb",
+ "nrip-save",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Dhyana-v1",
+ "typename": "Dhyana-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "ibpb",
+ "nrip-save",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Dhyana",
+ "typename": "Dhyana-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt",
+ "misalignsse",
+ "osvw",
+ "topoext",
+ "ibpb",
+ "nrip-save",
+ "xsavec"
+ ],
+ "alias-of": "Dhyana-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Denverton-v3",
+ "typename": "Denverton-v3-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Denverton-v2",
+ "typename": "Denverton-v2-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Denverton-v1",
+ "typename": "Denverton-v1-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Denverton",
+ "typename": "Denverton-x86_64-cpu",
+ "unavailable-features": [
+ "tsc-deadline",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec"
+ ],
+ "alias-of": "Denverton-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cooperlake-v2",
+ "typename": "Cooperlake-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vnni",
+ "spec-ctrl",
+ "stibp",
+ "arch-capabilities",
+ "ssbd",
+ "avx512-bf16",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cooperlake-v1",
+ "typename": "Cooperlake-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vnni",
+ "spec-ctrl",
+ "stibp",
+ "arch-capabilities",
+ "ssbd",
+ "avx512-bf16",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cooperlake",
+ "typename": "Cooperlake-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vnni",
+ "spec-ctrl",
+ "stibp",
+ "arch-capabilities",
+ "ssbd",
+ "avx512-bf16",
+ "xsavec"
+ ],
+ "alias-of": "Cooperlake-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Conroe-v1",
+ "typename": "Conroe-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Conroe",
+ "typename": "Conroe-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Conroe-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cascadelake-Server-v5",
+ "typename": "Cascadelake-Server-v5-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vnni",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec",
+ "xsaves"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cascadelake-Server-v4",
+ "typename": "Cascadelake-Server-v4-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vnni",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cascadelake-Server-v3",
+ "typename": "Cascadelake-Server-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vnni",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cascadelake-Server-v2",
+ "typename": "Cascadelake-Server-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vnni",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cascadelake-Server-v1",
+ "typename": "Cascadelake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vnni",
+ "spec-ctrl",
+ "ssbd",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cascadelake-Server-noTSX",
+ "typename": "Cascadelake-Server-noTSX-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vnni",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "xsavec"
+ ],
+ "alias-of": "Cascadelake-Server-v3",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Cascadelake-Server",
+ "typename": "Cascadelake-Server-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vnni",
+ "spec-ctrl",
+ "ssbd",
+ "xsavec"
+ ],
+ "alias-of": "Cascadelake-Server-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell-v4",
+ "typename": "Broadwell-v4-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell-v3",
+ "typename": "Broadwell-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell-v2",
+ "typename": "Broadwell-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell-v1",
+ "typename": "Broadwell-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm"
+ ],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell-noTSX-IBRS",
+ "typename": "Broadwell-noTSX-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "alias-of": "Broadwell-v4",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell-noTSX",
+ "typename": "Broadwell-noTSX-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "invpcid"
+ ],
+ "alias-of": "Broadwell-v2",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell-IBRS",
+ "typename": "Broadwell-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "alias-of": "Broadwell-v3",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "Broadwell",
+ "typename": "Broadwell-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "tsc-deadline",
+ "hle",
+ "invpcid",
+ "rtm"
+ ],
+ "alias-of": "Broadwell-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "486-v1",
+ "typename": "486-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ },
+ {
+ "name": "486",
+ "typename": "486-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "486-v1",
+ "static": false,
+ "migration-safe": true,
+ "deprecated": false
+ }
+ ],
+ "id": "libvirt-2"
+}
+
+{
+ "execute": "query-cpu-model-expansion",
+ "arguments": {
+ "type": "static",
+ "model": {
+ "name": "max"
+ }
+ },
+ "id": "libvirt-3"
+}
+
+{
+ "return": {
+ "model": {
+ "name": "base",
+ "props": {
+ "avx-ne-convert": false,
+ "vmx-entry-load-rtit-ctl": false,
+ "svme-addr-chk": true,
+ "lfence-always-serializing": false,
+ "cmov": true,
+ "ia64": false,
+ "ssb-no": false,
+ "aes": true,
+ "vmx-apicv-xapic": false,
+ "mmx": true,
+ "rdpid": true,
+ "arat": true,
+ "vmx-page-walk-4": false,
+ "vmx-page-walk-5": false,
+ "gfni": false,
+ "ibrs-all": false,
+ "vmx-desc-exit": false,
+ "pause-filter": false,
+ "mcdt-no": false,
+ "bus-lock-detect": false,
+ "xsavec": false,
+ "intel-pt": false,
+ "vmx-tsc-scaling": false,
+ "prefetchiti": false,
+ "vmx-cr8-store-exit": false,
+ "vmx-rdseed-exit": false,
+ "amx-fp16": false,
+ "vmx-eptp-switching": false,
+ "kvm-asyncpf": false,
+ "perfctr-core": false,
+ "mpx": true,
+ "auto-ibrs": false,
+ "pbe": false,
+ "avx512cd": false,
+ "decodeassists": false,
+ "vmx-exit-load-efer": false,
+ "vmx-exit-clear-bndcfgs": false,
+ "sse4.1": true,
+ "family": 0,
+ "intel-pt-lip": false,
+ "vmx-vmwrite-vmexit-fields": false,
+ "kvm-asyncpf-int": false,
+ "vmx-vnmi": false,
+ "vmx-true-ctls": false,
+ "vmx-ept-execonly": false,
+ "vmx-exit-save-efer": false,
+ "vmx-invept-all-context": false,
+ "wbnoinvd": true,
+ "avx512f": false,
+ "rfds-no": false,
+ "msr": true,
+ "mce": true,
+ "mca": true,
+ "xcrypt": false,
+ "sgx": false,
+ "vmx-exit-load-pat": false,
+ "vmx-intr-exit": false,
+ "min-level": 13,
+ "vmx-flexpriority": false,
+ "xgetbv1": true,
+ "cid": false,
+ "sgx-exinfo": false,
+ "amd-psfd": false,
+ "gds-no": false,
+ "ds": false,
+ "fxsr": true,
+ "avx512-fp16": false,
+ "avx512-bf16": false,
+ "vmx-cr8-load-exit": false,
+ "xsaveopt": true,
+ "arch-lbr": false,
+ "vmx-apicv-vid": false,
+ "vmx-exit-save-pat": false,
+ "xtpr": false,
+ "tsx-ctrl": false,
+ "vmx-ple": false,
+ "avx512vl": false,
+ "avx512-vpopcntdq": false,
+ "phe": false,
+ "extapic": false,
+ "3dnowprefetch": true,
+ "vmx-vmfunc": false,
+ "vmx-activity-shutdown": false,
+ "sgx1": false,
+ "sgx2": false,
+ "avx512vbmi2": false,
+ "cr8legacy": true,
+ "vmx-encls-exit": false,
+ "null-sel-clr-base": false,
+ "stibp": false,
+ "vmx-msr-bitmap": false,
+ "xcrypt-en": false,
+ "vmx-mwait-exit": false,
+ "vmx-pml": false,
+ "vmx-nmi-exit": false,
+ "amx-tile": false,
+ "vmx-invept-single-context-noglobals": false,
+ "pn": false,
+ "rsba": false,
+ "dca": false,
+ "vendor": "AuthenticAMD",
+ "vmx-unrestricted-guest": false,
+ "vmx-cr3-store-noexit": false,
+ "pku": true,
+ "pks": true,
+ "smx": false,
+ "cmp-legacy": false,
+ "avx512-4fmaps": false,
+ "vmcb-clean": false,
+ "hle": false,
+ "avx-vnni": false,
+ "3dnowext": true,
+ "amd-no-ssb": false,
+ "npt": true,
+ "sgxlc": false,
+ "rdctl-no": false,
+ "vmx-invvpid": false,
+ "clwb": true,
+ "lbrv": false,
+ "adx": true,
+ "ss": true,
+ "pni": true,
+ "tsx-ldtrk": false,
+ "svm-lock": false,
+ "smep": true,
+ "smap": true,
+ "pfthreshold": false,
+ "vmx-invpcid-exit": false,
+ "amx-int8": false,
+ "x2apic": true,
+ "avx512vbmi": false,
+ "avx512vnni": false,
+ "sgx-edeccssa": false,
+ "vmx-apicv-x2apic": false,
+ "kvm-pv-sched-yield": false,
+ "vmx-invlpg-exit": false,
+ "no-nested-data-bp": false,
+ "vmx-invvpid-all-context": false,
+ "vmx-activity-hlt": false,
+ "flushbyasid": false,
+ "f16c": true,
+ "vmx-exit-ack-intr": false,
+ "ace2-en": false,
+ "pae": true,
+ "pat": true,
+ "sse": true,
+ "phe-en": false,
+ "vmx-tsc-offset": false,
+ "kvm-nopiodelay": false,
+ "tm": false,
+ "fbsdp-no": false,
+ "kvmclock-stable-bit": false,
+ "vmx-rdtsc-exit": false,
+ "hypervisor": true,
+ "vmx-rdtscp-exit": false,
+ "mds-no": false,
+ "pcommit": false,
+ "vmx-vpid": false,
+ "syscall": true,
+ "kvm-asyncpf-vmexit": false,
+ "avx512dq": false,
+ "svm": true,
+ "invtsc": false,
+ "vmx-monitor-exit": false,
+ "sse2": true,
+ "ssbd": false,
+ "vmx-wbinvd-exit": false,
+ "est": false,
+ "kvm-poll-control": false,
+ "avx512ifma": false,
+ "tm2": false,
+ "kvm-pv-eoi": false,
+ "kvm-pv-ipi": false,
+ "cx8": true,
+ "vmx-invvpid-single-addr": false,
+ "waitpkg": false,
+ "cldemote": false,
+ "sgx-tokenkey": false,
+ "vmx-ept": false,
+ "pbrsb-no": false,
+ "xfd": false,
+ "kvm-mmu": false,
+ "sse4.2": true,
+ "pge": true,
+ "avx512bitalg": false,
+ "pdcm": false,
+ "vmx-entry-load-bndcfgs": false,
+ "vmx-exit-clear-rtit-ctl": false,
+ "stibp-always-on": false,
+ "model": 0,
+ "movbe": true,
+ "nrip-save": false,
+ "ssse3": true,
+ "sse4a": true,
+ "kvm-msi-ext-dest-id": false,
+ "vmx-pause-exit": false,
+ "invpcid": false,
+ "sgx-debug": false,
+ "pdpe1gb": true,
+ "sgx-mode64": false,
+ "tsc-deadline": false,
+ "skip-l1dfl-vmentry": false,
+ "vmx-exit-load-perf-global-ctrl": false,
+ "fma": true,
+ "lam": false,
+ "cx16": true,
+ "de": true,
+ "fzrm": true,
+ "avx-ifma": false,
+ "stepping": 0,
+ "xsave": true,
+ "clflush": true,
+ "skinit": false,
+ "avx-vnni-int8": false,
+ "tsc": true,
+ "tce": false,
+ "flush-l1d": false,
+ "fpu": true,
+ "ds-cpl": false,
+ "ibs": false,
+ "fma4": false,
+ "vmx-exit-nosave-debugctl": false,
+ "sgx-kss": false,
+ "la57": true,
+ "vmx-invept": false,
+ "osvw": false,
+ "rfds-clear": false,
+ "apic": true,
+ "pmm": false,
+ "vmx-entry-noload-debugctl": false,
+ "vmx-eptad": false,
+ "spec-ctrl": false,
+ "vmx-posted-intr": false,
+ "vmx-apicv-register": false,
+ "tsc-adjust": false,
+ "vnmi": false,
+ "kvm-steal-time": false,
+ "psdp-no": false,
+ "vmx-any-errcode": false,
+ "avx512-vp2intersect": false,
+ "kvmclock": false,
+ "vmx-zero-len-inject": false,
+ "amx-complex": false,
+ "pschange-mc-no": false,
+ "v-vmsave-vmload": false,
+ "vmx-rdrand-exit": false,
+ "sgx-provisionkey": false,
+ "lwp": false,
+ "amd-ssbd": false,
+ "xop": false,
+ "ibpb": false,
+ "ibrs": false,
+ "avx": true,
+ "core-capability": false,
+ "vmx-invept-single-context": false,
+ "movdiri": false,
+ "acpi": true,
+ "avx512bw": false,
+ "ace2": false,
+ "fsgsbase": true,
+ "vmx-ept-2mb": false,
+ "vmx-ept-1gb": false,
+ "ht": false,
+ "vmx-io-exit": false,
+ "nx": true,
+ "pclmulqdq": true,
+ "mmxext": true,
+ "popcnt": true,
+ "vaes": true,
+ "serialize": false,
+ "movdir64b": false,
+ "xsaves": false,
+ "vmx-shadow-vmcs": false,
+ "lm": true,
+ "vmx-exit-save-preemption-timer": false,
+ "vmx-entry-load-pat": false,
+ "fsrm": true,
+ "fsrs": true,
+ "fsrc": true,
+ "sbdr-ssdp-no": false,
+ "vmx-entry-load-perf-global-ctrl": false,
+ "vmx-io-bitmap": false,
+ "umip": true,
+ "vmx-store-lma": false,
+ "vmx-movdr-exit": false,
+ "pse": true,
+ "avx2": true,
+ "avic": false,
+ "sep": true,
+ "virt-ssbd": false,
+ "vmx-cr3-load-noexit": false,
+ "nodeid-msr": false,
+ "md-clear": false,
+ "misalignsse": false,
+ "split-lock-detect": false,
+ "min-xlevel": 2147483658,
+ "bmi1": true,
+ "bmi2": true,
+ "kvm-pv-unhalt": false,
+ "tsc-scale": false,
+ "topoext": false,
+ "amd-stibp": false,
+ "vmx-preemption-timer": false,
+ "clflushopt": true,
+ "vmx-entry-load-pkrs": false,
+ "vmx-vnmi-pending": false,
+ "monitor": true,
+ "vmx-vintr-pending": false,
+ "avx512er": false,
+ "full-width-write": false,
+ "pmm-en": false,
+ "pcid": false,
+ "taa-no": false,
+ "arch-capabilities": false,
+ "vgif": true,
+ "vmx-secondary-ctls": false,
+ "vmx-xsaves": false,
+ "clzero": false,
+ "3dnow": true,
+ "erms": true,
+ "vmx-entry-ia32e-mode": false,
+ "lahf-lm": true,
+ "vpclmulqdq": false,
+ "vmx-ins-outs": false,
+ "fxsr-opt": false,
+ "xstore": false,
+ "rtm": false,
+ "kvm-hint-dedicated": false,
+ "sgx-aex-notify": false,
+ "amx-bf16": false,
+ "lmce": false,
+ "perfctr-nb": false,
+ "rdrand": true,
+ "rdseed": true,
+ "cmpccxadd": true,
+ "avx512-4vnniw": false,
+ "vme": false,
+ "vmx": false,
+ "dtes64": false,
+ "mtrr": true,
+ "rdtscp": true,
+ "xsaveerptr": true,
+ "pse36": true,
+ "kvm-pv-tlb-flush": false,
+ "vmx-activity-wait-sipi": false,
+ "tbm": false,
+ "wdt": false,
+ "vmx-rdpmc-exit": false,
+ "vmx-mtf": false,
+ "vmx-entry-load-efer": false,
+ "model-id": "QEMU TCG CPU version 2.5+",
+ "sha-ni": true,
+ "fb-clear": false,
+ "vmx-exit-load-pkrs": false,
+ "abm": true,
+ "vmx-ept-advanced-exitinfo": false,
+ "vmx-enable-user-wait-pause": false,
+ "avx512pf": false,
+ "vmx-hlt-exit": false,
+ "xstore-en": false
+ }
+ }
+ },
+ "id": "libvirt-3"
+}
+
+{
+ "execute": "query-cpu-model-expansion",
+ "arguments": {
+ "type": "static",
+ "model": {
+ "name": "max",
+ "props": {
+ "migratable": false
+ }
+ }
+ },
+ "id": "libvirt-4"
+}
+
+{
+ "return": {
+ "model": {
+ "name": "base",
+ "props": {
+ "avx-ne-convert": false,
+ "vmx-entry-load-rtit-ctl": false,
+ "svme-addr-chk": true,
+ "lfence-always-serializing": false,
+ "cmov": true,
+ "ia64": false,
+ "ssb-no": false,
+ "aes": true,
+ "vmx-apicv-xapic": false,
+ "mmx": true,
+ "rdpid": true,
+ "arat": true,
+ "vmx-page-walk-4": false,
+ "vmx-page-walk-5": false,
+ "gfni": false,
+ "ibrs-all": false,
+ "vmx-desc-exit": false,
+ "pause-filter": false,
+ "mcdt-no": false,
+ "bus-lock-detect": false,
+ "xsavec": false,
+ "intel-pt": false,
+ "vmx-tsc-scaling": false,
+ "prefetchiti": false,
+ "vmx-cr8-store-exit": false,
+ "vmx-rdseed-exit": false,
+ "amx-fp16": false,
+ "vmx-eptp-switching": false,
+ "kvm-asyncpf": false,
+ "perfctr-core": false,
+ "mpx": true,
+ "auto-ibrs": false,
+ "pbe": false,
+ "avx512cd": false,
+ "decodeassists": false,
+ "vmx-exit-load-efer": false,
+ "vmx-exit-clear-bndcfgs": false,
+ "sse4.1": true,
+ "family": 0,
+ "intel-pt-lip": false,
+ "vmx-vmwrite-vmexit-fields": false,
+ "kvm-asyncpf-int": false,
+ "vmx-vnmi": false,
+ "vmx-true-ctls": false,
+ "vmx-ept-execonly": false,
+ "vmx-exit-save-efer": false,
+ "vmx-invept-all-context": false,
+ "wbnoinvd": true,
+ "avx512f": false,
+ "rfds-no": false,
+ "msr": true,
+ "mce": true,
+ "mca": true,
+ "xcrypt": false,
+ "sgx": false,
+ "vmx-exit-load-pat": false,
+ "vmx-intr-exit": false,
+ "min-level": 13,
+ "vmx-flexpriority": false,
+ "xgetbv1": true,
+ "cid": false,
+ "sgx-exinfo": false,
+ "amd-psfd": false,
+ "gds-no": false,
+ "ds": false,
+ "fxsr": true,
+ "avx512-fp16": false,
+ "avx512-bf16": false,
+ "vmx-cr8-load-exit": false,
+ "xsaveopt": true,
+ "arch-lbr": false,
+ "vmx-apicv-vid": false,
+ "vmx-exit-save-pat": false,
+ "xtpr": false,
+ "tsx-ctrl": false,
+ "vmx-ple": false,
+ "avx512vl": false,
+ "avx512-vpopcntdq": false,
+ "phe": false,
+ "extapic": false,
+ "3dnowprefetch": true,
+ "vmx-vmfunc": false,
+ "vmx-activity-shutdown": false,
+ "sgx1": false,
+ "sgx2": false,
+ "avx512vbmi2": false,
+ "cr8legacy": true,
+ "vmx-encls-exit": false,
+ "null-sel-clr-base": false,
+ "stibp": false,
+ "vmx-msr-bitmap": false,
+ "xcrypt-en": false,
+ "vmx-mwait-exit": false,
+ "vmx-pml": false,
+ "vmx-nmi-exit": false,
+ "amx-tile": false,
+ "vmx-invept-single-context-noglobals": false,
+ "pn": false,
+ "rsba": false,
+ "dca": false,
+ "vendor": "AuthenticAMD",
+ "vmx-unrestricted-guest": false,
+ "vmx-cr3-store-noexit": false,
+ "pku": true,
+ "pks": true,
+ "smx": false,
+ "cmp-legacy": false,
+ "avx512-4fmaps": false,
+ "vmcb-clean": false,
+ "hle": false,
+ "avx-vnni": false,
+ "3dnowext": true,
+ "amd-no-ssb": false,
+ "npt": true,
+ "sgxlc": false,
+ "rdctl-no": false,
+ "vmx-invvpid": false,
+ "clwb": true,
+ "lbrv": false,
+ "adx": true,
+ "ss": true,
+ "pni": true,
+ "tsx-ldtrk": false,
+ "svm-lock": false,
+ "smep": true,
+ "smap": true,
+ "pfthreshold": false,
+ "vmx-invpcid-exit": false,
+ "amx-int8": false,
+ "x2apic": true,
+ "avx512vbmi": false,
+ "avx512vnni": false,
+ "sgx-edeccssa": false,
+ "vmx-apicv-x2apic": false,
+ "kvm-pv-sched-yield": false,
+ "vmx-invlpg-exit": false,
+ "no-nested-data-bp": false,
+ "vmx-invvpid-all-context": false,
+ "vmx-activity-hlt": false,
+ "flushbyasid": false,
+ "f16c": true,
+ "vmx-exit-ack-intr": false,
+ "ace2-en": false,
+ "pae": true,
+ "pat": true,
+ "sse": true,
+ "phe-en": false,
+ "vmx-tsc-offset": false,
+ "kvm-nopiodelay": false,
+ "tm": false,
+ "fbsdp-no": false,
+ "kvmclock-stable-bit": false,
+ "vmx-rdtsc-exit": false,
+ "hypervisor": true,
+ "vmx-rdtscp-exit": false,
+ "mds-no": false,
+ "pcommit": false,
+ "vmx-vpid": false,
+ "syscall": true,
+ "kvm-asyncpf-vmexit": false,
+ "avx512dq": false,
+ "svm": true,
+ "invtsc": false,
+ "vmx-monitor-exit": false,
+ "sse2": true,
+ "ssbd": false,
+ "vmx-wbinvd-exit": false,
+ "est": false,
+ "kvm-poll-control": false,
+ "avx512ifma": false,
+ "tm2": false,
+ "kvm-pv-eoi": false,
+ "kvm-pv-ipi": false,
+ "cx8": true,
+ "vmx-invvpid-single-addr": false,
+ "waitpkg": false,
+ "cldemote": false,
+ "sgx-tokenkey": false,
+ "vmx-ept": false,
+ "pbrsb-no": false,
+ "xfd": false,
+ "kvm-mmu": false,
+ "sse4.2": true,
+ "pge": true,
+ "avx512bitalg": false,
+ "pdcm": false,
+ "vmx-entry-load-bndcfgs": false,
+ "vmx-exit-clear-rtit-ctl": false,
+ "stibp-always-on": false,
+ "model": 0,
+ "movbe": true,
+ "nrip-save": false,
+ "ssse3": true,
+ "sse4a": true,
+ "kvm-msi-ext-dest-id": false,
+ "vmx-pause-exit": false,
+ "invpcid": false,
+ "sgx-debug": false,
+ "pdpe1gb": true,
+ "sgx-mode64": false,
+ "tsc-deadline": false,
+ "skip-l1dfl-vmentry": false,
+ "vmx-exit-load-perf-global-ctrl": false,
+ "fma": true,
+ "lam": false,
+ "cx16": true,
+ "de": true,
+ "fzrm": true,
+ "avx-ifma": false,
+ "stepping": 0,
+ "xsave": true,
+ "clflush": true,
+ "skinit": false,
+ "avx-vnni-int8": false,
+ "tsc": true,
+ "tce": false,
+ "flush-l1d": false,
+ "fpu": true,
+ "ds-cpl": false,
+ "ibs": false,
+ "fma4": false,
+ "vmx-exit-nosave-debugctl": false,
+ "sgx-kss": false,
+ "la57": true,
+ "vmx-invept": false,
+ "osvw": false,
+ "rfds-clear": false,
+ "apic": true,
+ "pmm": false,
+ "vmx-entry-noload-debugctl": false,
+ "vmx-eptad": false,
+ "spec-ctrl": false,
+ "vmx-posted-intr": false,
+ "vmx-apicv-register": false,
+ "tsc-adjust": false,
+ "vnmi": false,
+ "kvm-steal-time": false,
+ "psdp-no": false,
+ "vmx-any-errcode": false,
+ "avx512-vp2intersect": false,
+ "kvmclock": false,
+ "vmx-zero-len-inject": false,
+ "amx-complex": false,
+ "pschange-mc-no": false,
+ "v-vmsave-vmload": false,
+ "vmx-rdrand-exit": false,
+ "sgx-provisionkey": false,
+ "lwp": false,
+ "amd-ssbd": false,
+ "xop": false,
+ "ibpb": false,
+ "ibrs": false,
+ "avx": true,
+ "core-capability": false,
+ "vmx-invept-single-context": false,
+ "movdiri": false,
+ "acpi": true,
+ "avx512bw": false,
+ "ace2": false,
+ "fsgsbase": true,
+ "vmx-ept-2mb": false,
+ "vmx-ept-1gb": false,
+ "ht": false,
+ "vmx-io-exit": false,
+ "nx": true,
+ "pclmulqdq": true,
+ "mmxext": true,
+ "popcnt": true,
+ "vaes": true,
+ "serialize": false,
+ "movdir64b": false,
+ "xsaves": false,
+ "vmx-shadow-vmcs": false,
+ "lm": true,
+ "vmx-exit-save-preemption-timer": false,
+ "vmx-entry-load-pat": false,
+ "fsrm": true,
+ "fsrs": true,
+ "fsrc": true,
+ "sbdr-ssdp-no": false,
+ "vmx-entry-load-perf-global-ctrl": false,
+ "vmx-io-bitmap": false,
+ "umip": true,
+ "vmx-store-lma": false,
+ "vmx-movdr-exit": false,
+ "pse": true,
+ "avx2": true,
+ "avic": false,
+ "sep": true,
+ "virt-ssbd": false,
+ "vmx-cr3-load-noexit": false,
+ "nodeid-msr": false,
+ "md-clear": false,
+ "misalignsse": false,
+ "split-lock-detect": false,
+ "min-xlevel": 2147483658,
+ "bmi1": true,
+ "bmi2": true,
+ "kvm-pv-unhalt": false,
+ "tsc-scale": false,
+ "topoext": false,
+ "amd-stibp": false,
+ "vmx-preemption-timer": false,
+ "clflushopt": true,
+ "vmx-entry-load-pkrs": false,
+ "vmx-vnmi-pending": false,
+ "monitor": true,
+ "vmx-vintr-pending": false,
+ "avx512er": false,
+ "full-width-write": false,
+ "pmm-en": false,
+ "pcid": false,
+ "taa-no": false,
+ "arch-capabilities": false,
+ "vgif": true,
+ "vmx-secondary-ctls": false,
+ "vmx-xsaves": false,
+ "clzero": false,
+ "3dnow": true,
+ "erms": true,
+ "vmx-entry-ia32e-mode": false,
+ "lahf-lm": true,
+ "vpclmulqdq": false,
+ "vmx-ins-outs": false,
+ "fxsr-opt": false,
+ "xstore": false,
+ "rtm": false,
+ "kvm-hint-dedicated": false,
+ "sgx-aex-notify": false,
+ "amx-bf16": false,
+ "lmce": false,
+ "perfctr-nb": false,
+ "rdrand": true,
+ "rdseed": true,
+ "cmpccxadd": true,
+ "avx512-4vnniw": false,
+ "vme": false,
+ "vmx": false,
+ "dtes64": false,
+ "mtrr": true,
+ "rdtscp": true,
+ "xsaveerptr": true,
+ "pse36": true,
+ "kvm-pv-tlb-flush": false,
+ "vmx-activity-wait-sipi": false,
+ "tbm": false,
+ "wdt": false,
+ "vmx-rdpmc-exit": false,
+ "vmx-mtf": false,
+ "vmx-entry-load-efer": false,
+ "model-id": "QEMU TCG CPU version 2.5+",
+ "sha-ni": true,
+ "fb-clear": false,
+ "vmx-exit-load-pkrs": false,
+ "abm": true,
+ "vmx-ept-advanced-exitinfo": false,
+ "vmx-enable-user-wait-pause": false,
+ "avx512pf": false,
+ "vmx-hlt-exit": false,
+ "xstore-en": false
+ }
+ }
+ },
+ "id": "libvirt-4"
+}
+
+{
+ "execute": "query-machines",
+ "id": "libvirt-5"
+}
+
+{
+ "return": [
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-5.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.12",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.0",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": true,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-6.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-4.2",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.5",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-4.2",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-5.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.7",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-9.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 4096,
+ "deprecated": false,
+ "default-ram-id": "pc.ram",
+ "alias": "q35"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-7.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.2",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": true,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-8.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 1024,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": false,
+ "name": "none",
+ "numa-mem-supported": false,
+ "acpi": false,
+ "cpu-max": 1,
+ "deprecated": false,
+ "default-ram-id": "ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-8.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.7",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-6.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-9.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "is-default": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram",
+ "alias": "pc"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.4",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-7.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.10",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": false,
+ "name": "x-remote",
+ "numa-mem-supported": false,
+ "acpi": false,
+ "cpu-max": 1,
+ "deprecated": false
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-5.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.9",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.11",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-3.1",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-6.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-4.1",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.4",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-4.1",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-5.1",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.9",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "isapc",
+ "numa-mem-supported": false,
+ "default-cpu-type": "486-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 1,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.6",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-3.1",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-9.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 4096,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.12",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-7.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.1",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": true,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-8.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-8.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-6.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.6",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-9.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-4.0.1",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-7.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-5.0",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.8",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.10",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-3.0",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-7.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-4.0",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-6.0",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": false,
+ "name": "microvm",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "microvm.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.3",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": true,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-8.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 1024,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-4.0",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-8.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-5.0",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-2.8",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-6.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-3.0",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.5",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-i440fx-7.2",
+ "numa-mem-supported": false,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 255,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ },
+ {
+ "hotpluggable-cpus": true,
+ "name": "pc-q35-2.11",
+ "numa-mem-supported": true,
+ "default-cpu-type": "qemu64-x86_64-cpu",
+ "acpi": true,
+ "cpu-max": 288,
+ "deprecated": false,
+ "default-ram-id": "pc.ram"
+ }
+ ],
+ "id": "libvirt-5"
+}
diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml
new file mode 100644
index 0000000000..306421def3
--- /dev/null
+++ b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml
@@ -0,0 +1,3946 @@
+<qemuCaps>
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
+ <qemuctime>0</qemuctime>
+ <selfctime>0</selfctime>
+ <selfvers>0</selfvers>
+ <flag name='kvm'/>
+ <flag name='sdl'/>
+ <flag name='spice'/>
+ <flag name='hda-duplex'/>
+ <flag name='ccid-emulated'/>
+ <flag name='ccid-passthru'/>
+ <flag name='piix3-usb-uhci'/>
+ <flag name='piix4-usb-uhci'/>
+ <flag name='usb-ehci'/>
+ <flag name='ich9-usb-ehci1'/>
+ <flag name='pci-ohci'/>
+ <flag name='usb-redir'/>
+ <flag name='usb-hub'/>
+ <flag name='ich9-ahci'/>
+ <flag name='virtio-blk-pci.scsi'/>
+ <flag name='scsi-disk.channel'/>
+ <flag name='scsi-block'/>
+ <flag name='hda-micro'/>
+ <flag name='nec-usb-xhci'/>
+ <flag name='lsi'/>
+ <flag name='virtio-scsi-pci'/>
+ <flag name='usb-redir.filter'/>
+ <flag name='seccomp-sandbox'/>
+ <flag name='vnc'/>
+ <flag name='qxl'/>
+ <flag name='VGA'/>
+ <flag name='cirrus-vga'/>
+ <flag name='vmware-svga'/>
+ <flag name='usb-serial'/>
+ <flag name='virtio-rng'/>
+ <flag name='rng-random'/>
+ <flag name='rng-egd'/>
+ <flag name='megasas'/>
+ <flag name='tpm-passthrough'/>
+ <flag name='tpm-tis'/>
+ <flag name='pci-bridge'/>
+ <flag name='vfio-pci'/>
+ <flag name='dmi-to-pci-bridge'/>
+ <flag name='usb-storage'/>
+ <flag name='virtio-mmio'/>
+ <flag name='ich9-intel-hda'/>
+ <flag name='kvm-pit-lost-tick-policy'/>
+ <flag name='pvpanic'/>
+ <flag name='usb-kbd'/>
+ <flag name='usb-audio'/>
+ <flag name='rtc-reset-reinjection'/>
+ <flag name='migrate-rdma'/>
+ <flag name='VGA.vgamem_mb'/>
+ <flag name='vmware-svga.vgamem_mb'/>
+ <flag name='qxl.vgamem_mb'/>
+ <flag name='pc-dimm'/>
+ <flag name='machine-vmport-opt'/>
+ <flag name='pci-serial'/>
+ <flag name='ioh3420'/>
+ <flag name='x3130-upstream'/>
+ <flag name='xio3130-downstream'/>
+ <flag name='rtl8139'/>
+ <flag name='e1000'/>
+ <flag name='virtio-net'/>
+ <flag name='virtio-gpu'/>
+ <flag name='virtio-keyboard'/>
+ <flag name='virtio-mouse'/>
+ <flag name='virtio-tablet'/>
+ <flag name='virtio-input-host'/>
+ <flag name='virtio-balloon-pci.deflate-on-oom'/>
+ <flag name='mptsas1068'/>
+ <flag name='spice-gl'/>
+ <flag name='qxl.vram64_size_mb'/>
+ <flag name='pxb'/>
+ <flag name='pxb-pcie'/>
+ <flag name='intel-iommu'/>
+ <flag name='virtio-vga'/>
+ <flag name='ivshmem-plain'/>
+ <flag name='ivshmem-doorbell'/>
+ <flag name='vhost-scsi'/>
+ <flag name='query-cpu-model-expansion'/>
+ <flag name='spice-rendernode'/>
+ <flag name='nvdimm'/>
+ <flag name='pcie-root-port'/>
+ <flag name='query-cpu-definitions'/>
+ <flag name='qemu-xhci'/>
+ <flag name='intel-iommu.intremap'/>
+ <flag name='intel-iommu.caching-mode'/>
+ <flag name='intel-iommu.eim'/>
+ <flag name='intel-iommu.device-iotlb'/>
+ <flag name='chardev-reconnect'/>
+ <flag name='vmcoreinfo'/>
+ <flag name='isa-serial'/>
+ <flag name='pcie-pci-bridge'/>
+ <flag name='nbd-tls'/>
+ <flag name='tpm-crb'/>
+ <flag name='pr-manager-helper'/>
+ <flag name='screendump_device'/>
+ <flag name='hda-output'/>
+ <flag name='vmgenid'/>
+ <flag name='vhost-vsock'/>
+ <flag name='tpm-emulator'/>
+ <flag name='mch'/>
+ <flag name='mch.extended-tseg-mbytes'/>
+ <flag name='egl-headless'/>
+ <flag name='memory-backend-memfd'/>
+ <flag name='memory-backend-memfd.hugetlb'/>
+ <flag name='egl-headless.rendernode'/>
+ <flag name='memory-backend-file.pmem'/>
+ <flag name='nvdimm.unarmed'/>
+ <flag name='virtio-pci-non-transitional'/>
+ <flag name='nbd-bitmap'/>
+ <flag name='x86-max-cpu'/>
+ <flag name='cpu-unavailable-features'/>
+ <flag name='canonical-cpu-features'/>
+ <flag name='bochs-display'/>
+ <flag name='migration-file-drop-cache'/>
+ <flag name='dbus-vmstate'/>
+ <flag name='vhost-user-gpu'/>
+ <flag name='vhost-user-vga'/>
+ <flag name='incremental-backup'/>
+ <flag name='ramfb'/>
+ <flag name='drive-nvme'/>
+ <flag name='smp-dies'/>
+ <flag name='i8042'/>
+ <flag name='rng-builtin'/>
+ <flag name='vhost-user-fs'/>
+ <flag name='query-named-block-nodes.flat'/>
+ <flag name='blockdev-snapshot.allow-write-only-overlay'/>
+ <flag name='blockdev-reopen'/>
+ <flag name='fsdev.multidevs'/>
+ <flag name='pcie-root-port.hotplug'/>
+ <flag name='aio.io_uring'/>
+ <flag name='tcg'/>
+ <flag name='virtio-blk-pci.scsi.default.disabled'/>
+ <flag name='pvscsi'/>
+ <flag name='cpu.migratable'/>
+ <flag name='intel-iommu.aw-bits'/>
+ <flag name='numa.hmat'/>
+ <flag name='usb-host.hostdevice'/>
+ <flag name='virtio-balloon.free-page-reporting'/>
+ <flag name='block-export-add'/>
+ <flag name='netdev.vhost-vdpa'/>
+ <flag name='dc390'/>
+ <flag name='am53c974'/>
+ <flag name='virtio-pmem-pci'/>
+ <flag name='vhost-user-fs.bootindex'/>
+ <flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
+ <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
+ <flag name='migration-param.block-bitmap-mapping'/>
+ <flag name='vnc-power-control'/>
+ <flag name='object.qapified'/>
+ <flag name='rotation-rate'/>
+ <flag name='compat-deprecated'/>
+ <flag name='acpi-index'/>
+ <flag name='input-linux'/>
+ <flag name='virtio-gpu-gl-pci'/>
+ <flag name='virtio-vga-gl'/>
+ <flag name='confidential-guest-support'/>
+ <flag name='set-action'/>
+ <flag name='virtio-blk.queue-size'/>
+ <flag name='virtio-mem-pci'/>
+ <flag name='memory-backend-file.reserve'/>
+ <flag name='piix4.acpi-root-pci-hotplug'/>
+ <flag name='netdev.json'/>
+ <flag name='query-dirty-rate'/>
+ <flag name='rbd-encryption'/>
+ <flag name='sev-guest-kernel-hashes'/>
+ <flag name='sev-inject-launch-secret'/>
+ <flag name='device.json+hotplug'/>
+ <flag name='virtio-mem-pci.prealloc'/>
+ <flag name='calc-dirty-rate'/>
+ <flag name='dirtyrate-param.mode'/>
+ <flag name='blockdev.nbd.tls-hostname'/>
+ <flag name='memory-backend-file.prealloc-threads'/>
+ <flag name='virtio-iommu-pci'/>
+ <flag name='virtio-iommu.boot-bypass'/>
+ <flag name='virtio-net.rss'/>
+ <flag name='chardev.qemu-vdagent'/>
+ <flag name='display-dbus'/>
+ <flag name='iothread.thread-pool-max'/>
+ <flag name='usb-host.guest-resets-all'/>
+ <flag name='migration.blocked-reasons'/>
+ <flag name='query-stats'/>
+ <flag name='query-stats-schemas'/>
+ <flag name='thread-context'/>
+ <flag name='screenshot-format-png'/>
+ <flag name='machine-hpet'/>
+ <flag name='netdev.stream'/>
+ <flag name='virtio-crypto'/>
+ <flag name='cryptodev-backend-lkcf'/>
+ <flag name='pvpanic-pci'/>
+ <flag name='netdev.stream.reconnect'/>
+ <flag name='virtio-gpu.blob'/>
+ <flag name='rbd-encryption-layering'/>
+ <flag name='rbd-encryption-luks-any'/>
+ <flag name='qcow2-discard-no-unref'/>
+ <flag name='run-with.async-teardown'/>
+ <flag name='virtio-blk-vhost-vdpa'/>
+ <flag name='virtio-blk.iothread-mapping'/>
+ <flag name='smp-clusters'/>
+ <flag name='virtio-mem-pci.dynamic-memslots'/>
+ <flag name='blockjob.backing-mask-protocol'/>
+ <flag name='display-reload'/>
+ <flag name='usb-mtp'/>
+ <flag name='virtio-sound'/>
+ <version>9000050</version>
+ <microcodeVersion>43100246</microcodeVersion>
+ <package>v9.0.0-995-g60b54b67c6</package>
+ <arch>x86_64</arch>
+ <hostCPU type='kvm' model='base' migratability='yes'>
+ <property name='avx-ne-convert' type='boolean' value='false'/>
+ <property name='vmx-entry-load-rtit-ctl' type='boolean' value='false'/>
+ <property name='svme-addr-chk' type='boolean' value='true' migratable='yes'/>
+ <property name='lfence-always-serializing' type='boolean' value='true' migratable='yes'/>
+ <property name='cmov' type='boolean' value='true' migratable='yes'/>
+ <property name='ia64' type='boolean' value='false'/>
+ <property name='ssb-no' type='boolean' value='false'/>
+ <property name='aes' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-apicv-xapic' type='boolean' value='false'/>
+ <property name='mmx' type='boolean' value='true' migratable='yes'/>
+ <property name='rdpid' type='boolean' value='true' migratable='yes'/>
+ <property name='arat' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-page-walk-4' type='boolean' value='false'/>
+ <property name='vmx-page-walk-5' type='boolean' value='false'/>
+ <property name='gfni' type='boolean' value='false'/>
+ <property name='ibrs-all' type='boolean' value='false'/>
+ <property name='vmx-desc-exit' type='boolean' value='false'/>
+ <property name='pause-filter' type='boolean' value='true' migratable='yes'/>
+ <property name='mcdt-no' type='boolean' value='false'/>
+ <property name='bus-lock-detect' type='boolean' value='false'/>
+ <property name='xsavec' type='boolean' value='true' migratable='yes'/>
+ <property name='intel-pt' type='boolean' value='false'/>
+ <property name='vmx-tsc-scaling' type='boolean' value='false'/>
+ <property name='prefetchiti' type='boolean' value='false'/>
+ <property name='vmx-cr8-store-exit' type='boolean' value='false'/>
+ <property name='vmx-rdseed-exit' type='boolean' value='false'/>
+ <property name='amx-fp16' type='boolean' value='false'/>
+ <property name='vmx-eptp-switching' type='boolean' value='false'/>
+ <property name='kvm-asyncpf' type='boolean' value='true' migratable='yes'/>
+ <property name='perfctr-core' type='boolean' value='true' migratable='yes'/>
+ <property name='mpx' type='boolean' value='false'/>
+ <property name='auto-ibrs' type='boolean' value='false'/>
+ <property name='pbe' type='boolean' value='false'/>
+ <property name='avx512cd' type='boolean' value='false'/>
+ <property name='decodeassists' type='boolean' value='false'/>
+ <property name='vmx-exit-load-efer' type='boolean' value='false'/>
+ <property name='vmx-exit-clear-bndcfgs' type='boolean' value='false'/>
+ <property name='sse4.1' type='boolean' value='true' migratable='yes'/>
+ <property name='family' type='number' value='23'/>
+ <property name='intel-pt-lip' type='boolean' value='false'/>
+ <property name='vmx-vmwrite-vmexit-fields' type='boolean' value='false'/>
+ <property name='kvm-asyncpf-int' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-vnmi' type='boolean' value='false'/>
+ <property name='vmx-true-ctls' type='boolean' value='false'/>
+ <property name='vmx-ept-execonly' type='boolean' value='false'/>
+ <property name='vmx-exit-save-efer' type='boolean' value='false'/>
+ <property name='vmx-invept-all-context' type='boolean' value='false'/>
+ <property name='wbnoinvd' type='boolean' value='true' migratable='yes'/>
+ <property name='avx512f' type='boolean' value='false'/>
+ <property name='rfds-no' type='boolean' value='true' migratable='yes'/>
+ <property name='msr' type='boolean' value='true' migratable='yes'/>
+ <property name='mce' type='boolean' value='true' migratable='yes'/>
+ <property name='mca' type='boolean' value='true' migratable='yes'/>
+ <property name='xcrypt' type='boolean' value='false'/>
+ <property name='sgx' type='boolean' value='false'/>
+ <property name='vmx-exit-load-pat' type='boolean' value='false'/>
+ <property name='vmx-intr-exit' type='boolean' value='false'/>
+ <property name='min-level' type='number' value='16'/>
+ <property name='vmx-flexpriority' type='boolean' value='false'/>
+ <property name='xgetbv1' type='boolean' value='true' migratable='yes'/>
+ <property name='cid' type='boolean' value='false'/>
+ <property name='sgx-exinfo' type='boolean' value='false'/>
+ <property name='amd-psfd' type='boolean' value='false'/>
+ <property name='gds-no' type='boolean' value='true' migratable='yes'/>
+ <property name='ds' type='boolean' value='false'/>
+ <property name='fxsr' type='boolean' value='true' migratable='yes'/>
+ <property name='avx512-fp16' type='boolean' value='false'/>
+ <property name='avx512-bf16' type='boolean' value='false'/>
+ <property name='vmx-cr8-load-exit' type='boolean' value='false'/>
+ <property name='xsaveopt' type='boolean' value='true' migratable='yes'/>
+ <property name='arch-lbr' type='boolean' value='false'/>
+ <property name='vmx-apicv-vid' type='boolean' value='false'/>
+ <property name='vmx-exit-save-pat' type='boolean' value='false'/>
+ <property name='xtpr' type='boolean' value='false'/>
+ <property name='tsx-ctrl' type='boolean' value='false'/>
+ <property name='vmx-ple' type='boolean' value='false'/>
+ <property name='avx512vl' type='boolean' value='false'/>
+ <property name='avx512-vpopcntdq' type='boolean' value='false'/>
+ <property name='phe' type='boolean' value='false'/>
+ <property name='extapic' type='boolean' value='false'/>
+ <property name='3dnowprefetch' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-vmfunc' type='boolean' value='false'/>
+ <property name='vmx-activity-shutdown' type='boolean' value='false'/>
+ <property name='sgx1' type='boolean' value='false'/>
+ <property name='sgx2' type='boolean' value='false'/>
+ <property name='avx512vbmi2' type='boolean' value='false'/>
+ <property name='cr8legacy' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-encls-exit' type='boolean' value='false'/>
+ <property name='null-sel-clr-base' type='boolean' value='true' migratable='yes'/>
+ <property name='stibp' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-msr-bitmap' type='boolean' value='false'/>
+ <property name='xcrypt-en' type='boolean' value='false'/>
+ <property name='vmx-mwait-exit' type='boolean' value='false'/>
+ <property name='vmx-pml' type='boolean' value='false'/>
+ <property name='vmx-nmi-exit' type='boolean' value='false'/>
+ <property name='amx-tile' type='boolean' value='false'/>
+ <property name='vmx-invept-single-context-noglobals' type='boolean' value='false'/>
+ <property name='pn' type='boolean' value='false'/>
+ <property name='rsba' type='boolean' value='false'/>
+ <property name='dca' type='boolean' value='false'/>
+ <property name='vendor' type='string' value='AuthenticAMD'/>
+ <property name='vmx-unrestricted-guest' type='boolean' value='false'/>
+ <property name='vmx-cr3-store-noexit' type='boolean' value='false'/>
+ <property name='pku' type='boolean' value='false'/>
+ <property name='pks' type='boolean' value='false'/>
+ <property name='smx' type='boolean' value='false'/>
+ <property name='cmp-legacy' type='boolean' value='true' migratable='yes'/>
+ <property name='avx512-4fmaps' type='boolean' value='false'/>
+ <property name='vmcb-clean' type='boolean' value='true' migratable='yes'/>
+ <property name='hle' type='boolean' value='false'/>
+ <property name='avx-vnni' type='boolean' value='false'/>
+ <property name='3dnowext' type='boolean' value='false'/>
+ <property name='amd-no-ssb' type='boolean' value='false'/>
+ <property name='npt' type='boolean' value='true' migratable='yes'/>
+ <property name='sgxlc' type='boolean' value='false'/>
+ <property name='rdctl-no' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-invvpid' type='boolean' value='false'/>
+ <property name='clwb' type='boolean' value='true' migratable='yes'/>
+ <property name='lbrv' type='boolean' value='true' migratable='yes'/>
+ <property name='adx' type='boolean' value='true' migratable='yes'/>
+ <property name='ss' type='boolean' value='false'/>
+ <property name='pni' type='boolean' value='true' migratable='yes'/>
+ <property name='tsx-ldtrk' type='boolean' value='false'/>
+ <property name='svm-lock' type='boolean' value='false'/>
+ <property name='smep' type='boolean' value='true' migratable='yes'/>
+ <property name='smap' type='boolean' value='true' migratable='yes'/>
+ <property name='pfthreshold' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-invpcid-exit' type='boolean' value='false'/>
+ <property name='amx-int8' type='boolean' value='false'/>
+ <property name='x2apic' type='boolean' value='true' migratable='yes'/>
+ <property name='avx512vbmi' type='boolean' value='false'/>
+ <property name='avx512vnni' type='boolean' value='false'/>
+ <property name='sgx-edeccssa' type='boolean' value='false'/>
+ <property name='vmx-apicv-x2apic' type='boolean' value='false'/>
+ <property name='kvm-pv-sched-yield' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-invlpg-exit' type='boolean' value='false'/>
+ <property name='no-nested-data-bp' type='boolean' value='false'/>
+ <property name='vmx-invvpid-all-context' type='boolean' value='false'/>
+ <property name='vmx-activity-hlt' type='boolean' value='false'/>
+ <property name='flushbyasid' type='boolean' value='true' migratable='yes'/>
+ <property name='f16c' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-exit-ack-intr' type='boolean' value='false'/>
+ <property name='ace2-en' type='boolean' value='false'/>
+ <property name='pae' type='boolean' value='true' migratable='yes'/>
+ <property name='pat' type='boolean' value='true' migratable='yes'/>
+ <property name='sse' type='boolean' value='true' migratable='yes'/>
+ <property name='phe-en' type='boolean' value='false'/>
+ <property name='vmx-tsc-offset' type='boolean' value='false'/>
+ <property name='kvm-nopiodelay' type='boolean' value='true' migratable='yes'/>
+ <property name='tm' type='boolean' value='false'/>
+ <property name='fbsdp-no' type='boolean' value='false'/>
+ <property name='kvmclock-stable-bit' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-rdtsc-exit' type='boolean' value='false'/>
+ <property name='hypervisor' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-rdtscp-exit' type='boolean' value='false'/>
+ <property name='mds-no' type='boolean' value='true' migratable='yes'/>
+ <property name='pcommit' type='boolean' value='false'/>
+ <property name='vmx-vpid' type='boolean' value='false'/>
+ <property name='syscall' type='boolean' value='true' migratable='yes'/>
+ <property name='kvm-asyncpf-vmexit' type='boolean' value='true' migratable='yes'/>
+ <property name='avx512dq' type='boolean' value='false'/>
+ <property name='svm' type='boolean' value='true' migratable='yes'/>
+ <property name='invtsc' type='boolean' value='true' migratable='no'/>
+ <property name='vmx-monitor-exit' type='boolean' value='false'/>
+ <property name='sse2' type='boolean' value='true' migratable='yes'/>
+ <property name='ssbd' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-wbinvd-exit' type='boolean' value='false'/>
+ <property name='est' type='boolean' value='false'/>
+ <property name='kvm-poll-control' type='boolean' value='true' migratable='yes'/>
+ <property name='avx512ifma' type='boolean' value='false'/>
+ <property name='tm2' type='boolean' value='false'/>
+ <property name='kvm-pv-eoi' type='boolean' value='true' migratable='yes'/>
+ <property name='kvm-pv-ipi' type='boolean' value='true' migratable='yes'/>
+ <property name='cx8' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-invvpid-single-addr' type='boolean' value='false'/>
+ <property name='waitpkg' type='boolean' value='false'/>
+ <property name='cldemote' type='boolean' value='false'/>
+ <property name='sgx-tokenkey' type='boolean' value='false'/>
+ <property name='vmx-ept' type='boolean' value='false'/>
+ <property name='pbrsb-no' type='boolean' value='false'/>
+ <property name='xfd' type='boolean' value='false'/>
+ <property name='kvm-mmu' type='boolean' value='false'/>
+ <property name='sse4.2' type='boolean' value='true' migratable='yes'/>
+ <property name='pge' type='boolean' value='true' migratable='yes'/>
+ <property name='avx512bitalg' type='boolean' value='false'/>
+ <property name='pdcm' type='boolean' value='false'/>
+ <property name='vmx-entry-load-bndcfgs' type='boolean' value='false'/>
+ <property name='vmx-exit-clear-rtit-ctl' type='boolean' value='false'/>
+ <property name='stibp-always-on' type='boolean' value='false'/>
+ <property name='model' type='number' value='113'/>
+ <property name='movbe' type='boolean' value='true' migratable='yes'/>
+ <property name='nrip-save' type='boolean' value='true' migratable='yes'/>
+ <property name='ssse3' type='boolean' value='true' migratable='yes'/>
+ <property name='sse4a' type='boolean' value='true' migratable='yes'/>
+ <property name='kvm-msi-ext-dest-id' type='boolean' value='false'/>
+ <property name='vmx-pause-exit' type='boolean' value='false'/>
+ <property name='invpcid' type='boolean' value='false'/>
+ <property name='sgx-debug' type='boolean' value='false'/>
+ <property name='pdpe1gb' type='boolean' value='true' migratable='yes'/>
+ <property name='sgx-mode64' type='boolean' value='false'/>
+ <property name='tsc-deadline' type='boolean' value='true' migratable='yes'/>
+ <property name='skip-l1dfl-vmentry' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-exit-load-perf-global-ctrl' type='boolean' value='false'/>
+ <property name='fma' type='boolean' value='true' migratable='yes'/>
+ <property name='lam' type='boolean' value='false'/>
+ <property name='cx16' type='boolean' value='true' migratable='yes'/>
+ <property name='de' type='boolean' value='true' migratable='yes'/>
+ <property name='fzrm' type='boolean' value='false'/>
+ <property name='avx-ifma' type='boolean' value='false'/>
+ <property name='stepping' type='number' value='0'/>
+ <property name='xsave' type='boolean' value='true' migratable='yes'/>
+ <property name='clflush' type='boolean' value='true' migratable='yes'/>
+ <property name='skinit' type='boolean' value='false'/>
+ <property name='avx-vnni-int8' type='boolean' value='false'/>
+ <property name='tsc' type='boolean' value='true' migratable='yes'/>
+ <property name='tce' type='boolean' value='false'/>
+ <property name='flush-l1d' type='boolean' value='false'/>
+ <property name='fpu' type='boolean' value='true' migratable='yes'/>
+ <property name='ds-cpl' type='boolean' value='false'/>
+ <property name='ibs' type='boolean' value='false'/>
+ <property name='fma4' type='boolean' value='false'/>
+ <property name='vmx-exit-nosave-debugctl' type='boolean' value='false'/>
+ <property name='sgx-kss' type='boolean' value='false'/>
+ <property name='la57' type='boolean' value='false'/>
+ <property name='vmx-invept' type='boolean' value='false'/>
+ <property name='osvw' type='boolean' value='true' migratable='yes'/>
+ <property name='rfds-clear' type='boolean' value='false'/>
+ <property name='apic' type='boolean' value='true' migratable='yes'/>
+ <property name='pmm' type='boolean' value='false'/>
+ <property name='vmx-entry-noload-debugctl' type='boolean' value='false'/>
+ <property name='vmx-eptad' type='boolean' value='false'/>
+ <property name='spec-ctrl' type='boolean' value='false'/>
+ <property name='vmx-posted-intr' type='boolean' value='false'/>
+ <property name='vmx-apicv-register' type='boolean' value='false'/>
+ <property name='tsc-adjust' type='boolean' value='true' migratable='yes'/>
+ <property name='vnmi' type='boolean' value='false'/>
+ <property name='kvm-steal-time' type='boolean' value='true' migratable='yes'/>
+ <property name='psdp-no' type='boolean' value='false'/>
+ <property name='vmx-any-errcode' type='boolean' value='false'/>
+ <property name='avx512-vp2intersect' type='boolean' value='false'/>
+ <property name='kvmclock' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-zero-len-inject' type='boolean' value='false'/>
+ <property name='amx-complex' type='boolean' value='false'/>
+ <property name='pschange-mc-no' type='boolean' value='true' migratable='yes'/>
+ <property name='v-vmsave-vmload' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-rdrand-exit' type='boolean' value='false'/>
+ <property name='sgx-provisionkey' type='boolean' value='false'/>
+ <property name='lwp' type='boolean' value='false'/>
+ <property name='amd-ssbd' type='boolean' value='true' migratable='yes'/>
+ <property name='xop' type='boolean' value='false'/>
+ <property name='ibpb' type='boolean' value='true' migratable='yes'/>
+ <property name='ibrs' type='boolean' value='false'/>
+ <property name='avx' type='boolean' value='true' migratable='yes'/>
+ <property name='core-capability' type='boolean' value='false'/>
+ <property name='vmx-invept-single-context' type='boolean' value='false'/>
+ <property name='movdiri' type='boolean' value='false'/>
+ <property name='acpi' type='boolean' value='false'/>
+ <property name='avx512bw' type='boolean' value='false'/>
+ <property name='ace2' type='boolean' value='false'/>
+ <property name='fsgsbase' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-ept-2mb' type='boolean' value='false'/>
+ <property name='vmx-ept-1gb' type='boolean' value='false'/>
+ <property name='ht' type='boolean' value='false'/>
+ <property name='vmx-io-exit' type='boolean' value='false'/>
+ <property name='nx' type='boolean' value='true' migratable='yes'/>
+ <property name='pclmulqdq' type='boolean' value='true' migratable='yes'/>
+ <property name='mmxext' type='boolean' value='true' migratable='yes'/>
+ <property name='popcnt' type='boolean' value='true' migratable='yes'/>
+ <property name='vaes' type='boolean' value='false'/>
+ <property name='serialize' type='boolean' value='false'/>
+ <property name='movdir64b' type='boolean' value='false'/>
+ <property name='xsaves' type='boolean' value='false'/>
+ <property name='vmx-shadow-vmcs' type='boolean' value='false'/>
+ <property name='lm' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-exit-save-preemption-timer' type='boolean' value='false'/>
+ <property name='vmx-entry-load-pat' type='boolean' value='false'/>
+ <property name='fsrm' type='boolean' value='false'/>
+ <property name='fsrs' type='boolean' value='false'/>
+ <property name='fsrc' type='boolean' value='false'/>
+ <property name='sbdr-ssdp-no' type='boolean' value='false'/>
+ <property name='vmx-entry-load-perf-global-ctrl' type='boolean' value='false'/>
+ <property name='vmx-io-bitmap' type='boolean' value='false'/>
+ <property name='umip' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-store-lma' type='boolean' value='false'/>
+ <property name='vmx-movdr-exit' type='boolean' value='false'/>
+ <property name='pse' type='boolean' value='true' migratable='yes'/>
+ <property name='avx2' type='boolean' value='true' migratable='yes'/>
+ <property name='avic' type='boolean' value='false'/>
+ <property name='sep' type='boolean' value='true' migratable='yes'/>
+ <property name='virt-ssbd' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-cr3-load-noexit' type='boolean' value='false'/>
+ <property name='nodeid-msr' type='boolean' value='false'/>
+ <property name='md-clear' type='boolean' value='false'/>
+ <property name='misalignsse' type='boolean' value='true' migratable='yes'/>
+ <property name='split-lock-detect' type='boolean' value='false'/>
+ <property name='min-xlevel' type='number' value='2147483681'/>
+ <property name='bmi1' type='boolean' value='true' migratable='yes'/>
+ <property name='bmi2' type='boolean' value='true' migratable='yes'/>
+ <property name='kvm-pv-unhalt' type='boolean' value='true' migratable='yes'/>
+ <property name='tsc-scale' type='boolean' value='true' migratable='yes'/>
+ <property name='topoext' type='boolean' value='false'/>
+ <property name='amd-stibp' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-preemption-timer' type='boolean' value='false'/>
+ <property name='clflushopt' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-entry-load-pkrs' type='boolean' value='false'/>
+ <property name='vmx-vnmi-pending' type='boolean' value='false'/>
+ <property name='monitor' type='boolean' value='false'/>
+ <property name='vmx-vintr-pending' type='boolean' value='false'/>
+ <property name='avx512er' type='boolean' value='false'/>
+ <property name='full-width-write' type='boolean' value='false'/>
+ <property name='pmm-en' type='boolean' value='false'/>
+ <property name='pcid' type='boolean' value='false'/>
+ <property name='taa-no' type='boolean' value='false'/>
+ <property name='arch-capabilities' type='boolean' value='true' migratable='yes'/>
+ <property name='vgif' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-secondary-ctls' type='boolean' value='false'/>
+ <property name='vmx-xsaves' type='boolean' value='false'/>
+ <property name='clzero' type='boolean' value='true' migratable='yes'/>
+ <property name='3dnow' type='boolean' value='false'/>
+ <property name='erms' type='boolean' value='false'/>
+ <property name='vmx-entry-ia32e-mode' type='boolean' value='false'/>
+ <property name='lahf-lm' type='boolean' value='true' migratable='yes'/>
+ <property name='vpclmulqdq' type='boolean' value='false'/>
+ <property name='vmx-ins-outs' type='boolean' value='false'/>
+ <property name='fxsr-opt' type='boolean' value='true' migratable='yes'/>
+ <property name='xstore' type='boolean' value='false'/>
+ <property name='rtm' type='boolean' value='false'/>
+ <property name='kvm-hint-dedicated' type='boolean' value='false'/>
+ <property name='sgx-aex-notify' type='boolean' value='false'/>
+ <property name='amx-bf16' type='boolean' value='false'/>
+ <property name='lmce' type='boolean' value='false'/>
+ <property name='perfctr-nb' type='boolean' value='false'/>
+ <property name='rdrand' type='boolean' value='true' migratable='yes'/>
+ <property name='rdseed' type='boolean' value='true' migratable='yes'/>
+ <property name='cmpccxadd' type='boolean' value='false'/>
+ <property name='avx512-4vnniw' type='boolean' value='false'/>
+ <property name='vme' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx' type='boolean' value='false'/>
+ <property name='dtes64' type='boolean' value='false'/>
+ <property name='mtrr' type='boolean' value='true' migratable='yes'/>
+ <property name='rdtscp' type='boolean' value='true' migratable='yes'/>
+ <property name='xsaveerptr' type='boolean' value='true' migratable='yes'/>
+ <property name='pse36' type='boolean' value='true' migratable='yes'/>
+ <property name='kvm-pv-tlb-flush' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-activity-wait-sipi' type='boolean' value='false'/>
+ <property name='tbm' type='boolean' value='false'/>
+ <property name='wdt' type='boolean' value='false'/>
+ <property name='vmx-rdpmc-exit' type='boolean' value='false'/>
+ <property name='vmx-mtf' type='boolean' value='false'/>
+ <property name='vmx-entry-load-efer' type='boolean' value='false'/>
+ <property name='model-id' type='string' value='AMD Ryzen 9 3900X 12-Core Processor '/>
+ <property name='sha-ni' type='boolean' value='true' migratable='yes'/>
+ <property name='fb-clear' type='boolean' value='false'/>
+ <property name='vmx-exit-load-pkrs' type='boolean' value='false'/>
+ <property name='abm' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-ept-advanced-exitinfo' type='boolean' value='false'/>
+ <property name='vmx-enable-user-wait-pause' type='boolean' value='false'/>
+ <property name='avx512pf' type='boolean' value='false'/>
+ <property name='vmx-hlt-exit' type='boolean' value='false'/>
+ <property name='xstore-en' type='boolean' value='false'/>
+ </hostCPU>
+ <cpu type='kvm' name='max' typename='max-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='host' typename='host-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='base' typename='base-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='qemu64-v1' typename='qemu64-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='qemu64' typename='qemu64-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='qemu32-v1' typename='qemu32-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='qemu32' typename='qemu32-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='phenom-v1' typename='phenom-v1-x86_64-cpu' usable='no'>
+ <blocker name='3dnowext'/>
+ <blocker name='3dnow'/>
+ </cpu>
+ <cpu type='kvm' name='phenom' typename='phenom-x86_64-cpu' usable='no'>
+ <blocker name='3dnowext'/>
+ <blocker name='3dnow'/>
+ </cpu>
+ <cpu type='kvm' name='pentium3-v1' typename='pentium3-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='pentium3' typename='pentium3-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='pentium2-v1' typename='pentium2-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='pentium2' typename='pentium2-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='pentium-v1' typename='pentium-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='pentium' typename='pentium-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='n270-v1' typename='n270-v1-x86_64-cpu' usable='no'>
+ <blocker name='ss'/>
+ </cpu>
+ <cpu type='kvm' name='n270' typename='n270-x86_64-cpu' usable='no'>
+ <blocker name='ss'/>
+ </cpu>
+ <cpu type='kvm' name='kvm64-v1' typename='kvm64-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='kvm64' typename='kvm64-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='kvm32-v1' typename='kvm32-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='kvm32' typename='kvm32-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='coreduo-v1' typename='coreduo-v1-x86_64-cpu' usable='no'>
+ <blocker name='ss'/>
+ </cpu>
+ <cpu type='kvm' name='coreduo' typename='coreduo-x86_64-cpu' usable='no'>
+ <blocker name='ss'/>
+ </cpu>
+ <cpu type='kvm' name='core2duo-v1' typename='core2duo-v1-x86_64-cpu' usable='no'>
+ <blocker name='ss'/>
+ </cpu>
+ <cpu type='kvm' name='core2duo' typename='core2duo-x86_64-cpu' usable='no'>
+ <blocker name='ss'/>
+ </cpu>
+ <cpu type='kvm' name='athlon-v1' typename='athlon-v1-x86_64-cpu' usable='no'>
+ <blocker name='3dnowext'/>
+ <blocker name='3dnow'/>
+ </cpu>
+ <cpu type='kvm' name='athlon' typename='athlon-x86_64-cpu' usable='no'>
+ <blocker name='3dnowext'/>
+ <blocker name='3dnow'/>
+ </cpu>
+ <cpu type='kvm' name='Westmere-v2' typename='Westmere-v2-x86_64-cpu' usable='no'>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Westmere-v1' typename='Westmere-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Westmere-IBRS' typename='Westmere-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Westmere' typename='Westmere-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Snowridge-v4' typename='Snowridge-v4-x86_64-cpu' usable='no'>
+ <blocker name='erms'/>
+ <blocker name='gfni'/>
+ <blocker name='cldemote'/>
+ <blocker name='movdiri'/>
+ <blocker name='movdir64b'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='kvm' name='Snowridge-v3' typename='Snowridge-v3-x86_64-cpu' usable='no'>
+ <blocker name='erms'/>
+ <blocker name='gfni'/>
+ <blocker name='cldemote'/>
+ <blocker name='movdiri'/>
+ <blocker name='movdir64b'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='core-capability'/>
+ <blocker name='xsaves'/>
+ <blocker name='split-lock-detect'/>
+ </cpu>
+ <cpu type='kvm' name='Snowridge-v2' typename='Snowridge-v2-x86_64-cpu' usable='no'>
+ <blocker name='erms'/>
+ <blocker name='gfni'/>
+ <blocker name='cldemote'/>
+ <blocker name='movdiri'/>
+ <blocker name='movdir64b'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='core-capability'/>
+ <blocker name='split-lock-detect'/>
+ </cpu>
+ <cpu type='kvm' name='Snowridge-v1' typename='Snowridge-v1-x86_64-cpu' usable='no'>
+ <blocker name='erms'/>
+ <blocker name='mpx'/>
+ <blocker name='gfni'/>
+ <blocker name='cldemote'/>
+ <blocker name='movdiri'/>
+ <blocker name='movdir64b'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='core-capability'/>
+ <blocker name='mpx'/>
+ <blocker name='mpx'/>
+ <blocker name='split-lock-detect'/>
+ </cpu>
+ <cpu type='kvm' name='Snowridge' typename='Snowridge-x86_64-cpu' usable='no'>
+ <blocker name='erms'/>
+ <blocker name='mpx'/>
+ <blocker name='gfni'/>
+ <blocker name='cldemote'/>
+ <blocker name='movdiri'/>
+ <blocker name='movdir64b'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='core-capability'/>
+ <blocker name='mpx'/>
+ <blocker name='mpx'/>
+ <blocker name='split-lock-detect'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Server-v5' typename='Skylake-Server-v5-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsaves'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Server-v4' typename='Skylake-Server-v4-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Server-v3' typename='Skylake-Server-v3-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Server-v2' typename='Skylake-Server-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Server-v1' typename='Skylake-Server-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Server-noTSX-IBRS' typename='Skylake-Server-noTSX-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Server-IBRS' typename='Skylake-Server-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Server' typename='Skylake-Server-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Client-v4' typename='Skylake-Client-v4-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Client-v3' typename='Skylake-Client-v3-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Client-v2' typename='Skylake-Client-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Client-v1' typename='Skylake-Client-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Client-noTSX-IBRS' typename='Skylake-Client-noTSX-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Client-IBRS' typename='Skylake-Client-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Client' typename='Skylake-Client-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ </cpu>
+ <cpu type='kvm' name='SierraForest-v1' typename='SierraForest-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='pku'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='fsrm'/>
+ <blocker name='serialize'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='cmpccxadd'/>
+ <blocker name='fsrs'/>
+ <blocker name='avx-ifma'/>
+ <blocker name='xsaves'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='sbdr-ssdp-no'/>
+ <blocker name='fbsdp-no'/>
+ <blocker name='psdp-no'/>
+ <blocker name='pbrsb-no'/>
+ <blocker name='avx-vnni-int8'/>
+ <blocker name='avx-ne-convert'/>
+ <blocker name='mcdt-no'/>
+ </cpu>
+ <cpu type='kvm' name='SierraForest' typename='SierraForest-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='pku'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='fsrm'/>
+ <blocker name='serialize'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='cmpccxadd'/>
+ <blocker name='fsrs'/>
+ <blocker name='avx-ifma'/>
+ <blocker name='xsaves'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='sbdr-ssdp-no'/>
+ <blocker name='fbsdp-no'/>
+ <blocker name='psdp-no'/>
+ <blocker name='pbrsb-no'/>
+ <blocker name='avx-vnni-int8'/>
+ <blocker name='avx-ne-convert'/>
+ <blocker name='mcdt-no'/>
+ </cpu>
+ <cpu type='kvm' name='SapphireRapids-v3' typename='SapphireRapids-v3-x86_64-cpu' usable='no'>
+ <blocker name='ss'/>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='cldemote'/>
+ <blocker name='movdiri'/>
+ <blocker name='movdir64b'/>
+ <blocker name='fsrm'/>
+ <blocker name='serialize'/>
+ <blocker name='tsx-ldtrk'/>
+ <blocker name='amx-bf16'/>
+ <blocker name='avx512-fp16'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-int8'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='fzrm'/>
+ <blocker name='fsrs'/>
+ <blocker name='fsrc'/>
+ <blocker name='xsaves'/>
+ <blocker name='xfd'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-tile'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='taa-no'/>
+ <blocker name='sbdr-ssdp-no'/>
+ <blocker name='fbsdp-no'/>
+ <blocker name='psdp-no'/>
+ </cpu>
+ <cpu type='kvm' name='SapphireRapids-v2' typename='SapphireRapids-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='fsrm'/>
+ <blocker name='serialize'/>
+ <blocker name='tsx-ldtrk'/>
+ <blocker name='amx-bf16'/>
+ <blocker name='avx512-fp16'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-int8'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='fzrm'/>
+ <blocker name='fsrs'/>
+ <blocker name='fsrc'/>
+ <blocker name='xsaves'/>
+ <blocker name='xfd'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-tile'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='taa-no'/>
+ <blocker name='sbdr-ssdp-no'/>
+ <blocker name='fbsdp-no'/>
+ <blocker name='psdp-no'/>
+ </cpu>
+ <cpu type='kvm' name='SapphireRapids-v1' typename='SapphireRapids-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='fsrm'/>
+ <blocker name='serialize'/>
+ <blocker name='tsx-ldtrk'/>
+ <blocker name='amx-bf16'/>
+ <blocker name='avx512-fp16'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-int8'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='fzrm'/>
+ <blocker name='fsrs'/>
+ <blocker name='fsrc'/>
+ <blocker name='xsaves'/>
+ <blocker name='xfd'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-tile'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='taa-no'/>
+ </cpu>
+ <cpu type='kvm' name='SapphireRapids' typename='SapphireRapids-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='fsrm'/>
+ <blocker name='serialize'/>
+ <blocker name='tsx-ldtrk'/>
+ <blocker name='amx-bf16'/>
+ <blocker name='avx512-fp16'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-int8'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='fzrm'/>
+ <blocker name='fsrs'/>
+ <blocker name='fsrc'/>
+ <blocker name='xsaves'/>
+ <blocker name='xfd'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-tile'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='taa-no'/>
+ </cpu>
+ <cpu type='kvm' name='SandyBridge-v2' typename='SandyBridge-v2-x86_64-cpu' usable='no'>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='SandyBridge-v1' typename='SandyBridge-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='SandyBridge-IBRS' typename='SandyBridge-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='SandyBridge' typename='SandyBridge-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Penryn-v1' typename='Penryn-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Penryn' typename='Penryn-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Opteron_G5-v1' typename='Opteron_G5-v1-x86_64-cpu' usable='no'>
+ <blocker name='xop'/>
+ <blocker name='fma4'/>
+ <blocker name='tbm'/>
+ </cpu>
+ <cpu type='kvm' name='Opteron_G5' typename='Opteron_G5-x86_64-cpu' usable='no'>
+ <blocker name='xop'/>
+ <blocker name='fma4'/>
+ <blocker name='tbm'/>
+ </cpu>
+ <cpu type='kvm' name='Opteron_G4-v1' typename='Opteron_G4-v1-x86_64-cpu' usable='no'>
+ <blocker name='xop'/>
+ <blocker name='fma4'/>
+ </cpu>
+ <cpu type='kvm' name='Opteron_G4' typename='Opteron_G4-x86_64-cpu' usable='no'>
+ <blocker name='xop'/>
+ <blocker name='fma4'/>
+ </cpu>
+ <cpu type='kvm' name='Opteron_G3-v1' typename='Opteron_G3-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Opteron_G3' typename='Opteron_G3-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Opteron_G2-v1' typename='Opteron_G2-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Opteron_G2' typename='Opteron_G2-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Opteron_G1-v1' typename='Opteron_G1-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Opteron_G1' typename='Opteron_G1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Nehalem-v2' typename='Nehalem-v2-x86_64-cpu' usable='no'>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Nehalem-v1' typename='Nehalem-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Nehalem-IBRS' typename='Nehalem-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Nehalem' typename='Nehalem-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='KnightsMill-v1' typename='KnightsMill-v1-x86_64-cpu' usable='no'>
+ <blocker name='ss'/>
+ <blocker name='erms'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512pf'/>
+ <blocker name='avx512er'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='avx512-4vnniw'/>
+ <blocker name='avx512-4fmaps'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ </cpu>
+ <cpu type='kvm' name='KnightsMill' typename='KnightsMill-x86_64-cpu' usable='no'>
+ <blocker name='ss'/>
+ <blocker name='erms'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512pf'/>
+ <blocker name='avx512er'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='avx512-4vnniw'/>
+ <blocker name='avx512-4fmaps'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ </cpu>
+ <cpu type='kvm' name='IvyBridge-v2' typename='IvyBridge-v2-x86_64-cpu' usable='no'>
+ <blocker name='erms'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='IvyBridge-v1' typename='IvyBridge-v1-x86_64-cpu' usable='no'>
+ <blocker name='erms'/>
+ </cpu>
+ <cpu type='kvm' name='IvyBridge-IBRS' typename='IvyBridge-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='erms'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='IvyBridge' typename='IvyBridge-x86_64-cpu' usable='no'>
+ <blocker name='erms'/>
+ </cpu>
+ <cpu type='kvm' name='Icelake-Server-v7' typename='Icelake-Server-v7-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='fsrm'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsaves'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='taa-no'/>
+ </cpu>
+ <cpu type='kvm' name='Icelake-Server-v6' typename='Icelake-Server-v6-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='fsrm'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsaves'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='taa-no'/>
+ </cpu>
+ <cpu type='kvm' name='Icelake-Server-v5' typename='Icelake-Server-v5-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='fsrm'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsaves'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='taa-no'/>
+ </cpu>
+ <cpu type='kvm' name='Icelake-Server-v4' typename='Icelake-Server-v4-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='fsrm'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='taa-no'/>
+ </cpu>
+ <cpu type='kvm' name='Icelake-Server-v3' typename='Icelake-Server-v3-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='taa-no'/>
+ </cpu>
+ <cpu type='kvm' name='Icelake-Server-v2' typename='Icelake-Server-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='Icelake-Server-v1' typename='Icelake-Server-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='Icelake-Server-noTSX' typename='Icelake-Server-noTSX-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='Icelake-Server' typename='Icelake-Server-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='Haswell-v4' typename='Haswell-v4-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Haswell-v3' typename='Haswell-v3-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Haswell-v2' typename='Haswell-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ </cpu>
+ <cpu type='kvm' name='Haswell-v1' typename='Haswell-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ </cpu>
+ <cpu type='kvm' name='Haswell-noTSX-IBRS' typename='Haswell-noTSX-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Haswell-noTSX' typename='Haswell-noTSX-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ </cpu>
+ <cpu type='kvm' name='Haswell-IBRS' typename='Haswell-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Haswell' typename='Haswell-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ </cpu>
+ <cpu type='kvm' name='GraniteRapids-v1' typename='GraniteRapids-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='fsrm'/>
+ <blocker name='serialize'/>
+ <blocker name='tsx-ldtrk'/>
+ <blocker name='amx-bf16'/>
+ <blocker name='avx512-fp16'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-int8'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='fzrm'/>
+ <blocker name='fsrs'/>
+ <blocker name='fsrc'/>
+ <blocker name='amx-fp16'/>
+ <blocker name='xsaves'/>
+ <blocker name='xfd'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-tile'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='taa-no'/>
+ <blocker name='sbdr-ssdp-no'/>
+ <blocker name='fbsdp-no'/>
+ <blocker name='psdp-no'/>
+ <blocker name='pbrsb-no'/>
+ <blocker name='prefetchiti'/>
+ <blocker name='mcdt-no'/>
+ </cpu>
+ <cpu type='kvm' name='GraniteRapids' typename='GraniteRapids-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='fsrm'/>
+ <blocker name='serialize'/>
+ <blocker name='tsx-ldtrk'/>
+ <blocker name='amx-bf16'/>
+ <blocker name='avx512-fp16'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-int8'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='fzrm'/>
+ <blocker name='fsrs'/>
+ <blocker name='fsrc'/>
+ <blocker name='amx-fp16'/>
+ <blocker name='xsaves'/>
+ <blocker name='xfd'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-tile'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='taa-no'/>
+ <blocker name='sbdr-ssdp-no'/>
+ <blocker name='fbsdp-no'/>
+ <blocker name='psdp-no'/>
+ <blocker name='pbrsb-no'/>
+ <blocker name='prefetchiti'/>
+ <blocker name='mcdt-no'/>
+ </cpu>
+ <cpu type='kvm' name='EPYC-v4' typename='EPYC-v4-x86_64-cpu' usable='no'>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='kvm' name='EPYC-v3' typename='EPYC-v3-x86_64-cpu' usable='no'>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='kvm' name='EPYC-v2' typename='EPYC-v2-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='EPYC-v1' typename='EPYC-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='EPYC-Rome-v4' typename='EPYC-Rome-v4-x86_64-cpu' usable='no'>
+ <blocker name='ibrs'/>
+ </cpu>
+ <cpu type='kvm' name='EPYC-Rome-v3' typename='EPYC-Rome-v3-x86_64-cpu' usable='no'>
+ <blocker name='ibrs'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='kvm' name='EPYC-Rome-v2' typename='EPYC-Rome-v2-x86_64-cpu' usable='no'>
+ <blocker name='ibrs'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='kvm' name='EPYC-Rome-v1' typename='EPYC-Rome-v1-x86_64-cpu' usable='no'>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='kvm' name='EPYC-Rome' typename='EPYC-Rome-x86_64-cpu' usable='no'>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='kvm' name='EPYC-Milan-v2' typename='EPYC-Milan-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='pku'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='fsrm'/>
+ <blocker name='ibrs'/>
+ <blocker name='stibp-always-on'/>
+ <blocker name='amd-psfd'/>
+ <blocker name='no-nested-data-bp'/>
+ <blocker name='xsaves'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='EPYC-Milan-v1' typename='EPYC-Milan-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='pku'/>
+ <blocker name='fsrm'/>
+ <blocker name='ibrs'/>
+ <blocker name='xsaves'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='EPYC-Milan' typename='EPYC-Milan-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='pku'/>
+ <blocker name='fsrm'/>
+ <blocker name='ibrs'/>
+ <blocker name='xsaves'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='EPYC-IBPB' typename='EPYC-IBPB-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='EPYC-Genoa-v1' typename='EPYC-Genoa-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='fsrm'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='ibrs'/>
+ <blocker name='stibp-always-on'/>
+ <blocker name='amd-psfd'/>
+ <blocker name='no-nested-data-bp'/>
+ <blocker name='auto-ibrs'/>
+ <blocker name='xsaves'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='EPYC-Genoa' typename='EPYC-Genoa-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='la57'/>
+ <blocker name='fsrm'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='ibrs'/>
+ <blocker name='stibp-always-on'/>
+ <blocker name='amd-psfd'/>
+ <blocker name='no-nested-data-bp'/>
+ <blocker name='auto-ibrs'/>
+ <blocker name='xsaves'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='EPYC' typename='EPYC-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Dhyana-v2' typename='Dhyana-v2-x86_64-cpu' usable='no'>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='kvm' name='Dhyana-v1' typename='Dhyana-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Dhyana' typename='Dhyana-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Denverton-v3' typename='Denverton-v3-x86_64-cpu' usable='no'>
+ <blocker name='erms'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='kvm' name='Denverton-v2' typename='Denverton-v2-x86_64-cpu' usable='no'>
+ <blocker name='erms'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Denverton-v1' typename='Denverton-v1-x86_64-cpu' usable='no'>
+ <blocker name='erms'/>
+ <blocker name='mpx'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='mpx'/>
+ <blocker name='mpx'/>
+ </cpu>
+ <cpu type='kvm' name='Denverton' typename='Denverton-x86_64-cpu' usable='no'>
+ <blocker name='erms'/>
+ <blocker name='mpx'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='mpx'/>
+ <blocker name='mpx'/>
+ </cpu>
+ <cpu type='kvm' name='Cooperlake-v2' typename='Cooperlake-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='xsaves'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='taa-no'/>
+ </cpu>
+ <cpu type='kvm' name='Cooperlake-v1' typename='Cooperlake-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='taa-no'/>
+ </cpu>
+ <cpu type='kvm' name='Cooperlake' typename='Cooperlake-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='taa-no'/>
+ </cpu>
+ <cpu type='kvm' name='Conroe-v1' typename='Conroe-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Conroe' typename='Conroe-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='Cascadelake-Server-v5' typename='Cascadelake-Server-v5-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsaves'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ </cpu>
+ <cpu type='kvm' name='Cascadelake-Server-v4' typename='Cascadelake-Server-v4-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ </cpu>
+ <cpu type='kvm' name='Cascadelake-Server-v3' typename='Cascadelake-Server-v3-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ </cpu>
+ <cpu type='kvm' name='Cascadelake-Server-v2' typename='Cascadelake-Server-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ </cpu>
+ <cpu type='kvm' name='Cascadelake-Server-v1' typename='Cascadelake-Server-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='Cascadelake-Server-noTSX' typename='Cascadelake-Server-noTSX-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='ibrs-all'/>
+ </cpu>
+ <cpu type='kvm' name='Cascadelake-Server' typename='Cascadelake-Server-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
+ <cpu type='kvm' name='Broadwell-v4' typename='Broadwell-v4-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Broadwell-v3' typename='Broadwell-v3-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Broadwell-v2' typename='Broadwell-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ </cpu>
+ <cpu type='kvm' name='Broadwell-v1' typename='Broadwell-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ </cpu>
+ <cpu type='kvm' name='Broadwell-noTSX-IBRS' typename='Broadwell-noTSX-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Broadwell-noTSX' typename='Broadwell-noTSX-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ </cpu>
+ <cpu type='kvm' name='Broadwell-IBRS' typename='Broadwell-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='kvm' name='Broadwell' typename='Broadwell-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='hle'/>
+ <blocker name='erms'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ </cpu>
+ <cpu type='kvm' name='486-v1' typename='486-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='kvm' name='486' typename='486-x86_64-cpu' usable='yes'/>
+ <machine type='kvm' name='pc-i440fx-9.1' alias='pc' hotplugCpus='yes' maxCpus='255' default='yes' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-5.2' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-2.12' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-2.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' deprecated='yes' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-6.2' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-4.2' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-2.5' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-4.2' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-5.2' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-2.7' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-9.1' alias='q35' hotplugCpus='yes' maxCpus='4096' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-7.1' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-2.2' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' deprecated='yes' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-8.1' hotplugCpus='yes' maxCpus='1024' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-8.1' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-2.7' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-6.1' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-2.4' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-7.1' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-2.10' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='x-remote' maxCpus='1' acpi='no'/>
+ <machine type='kvm' name='pc-q35-5.1' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-2.9' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-2.11' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-3.1' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-6.1' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-4.1' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-2.4' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-4.1' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-5.1' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-2.9' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='isapc' hotplugCpus='yes' maxCpus='1' defaultCPU='486-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-2.6' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-3.1' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-9.0' hotplugCpus='yes' maxCpus='4096' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-2.12' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-7.0' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-2.1' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' deprecated='yes' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-8.0' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-8.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-6.0' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-2.6' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-9.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-4.0.1' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-7.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-5.0' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-2.8' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-2.10' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-3.0' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-7.2' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-4.0' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-6.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='microvm' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='microvm.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-2.3' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' deprecated='yes' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-8.2' hotplugCpus='yes' maxCpus='1024' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-4.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-8.2' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-5.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-2.8' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-6.2' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-3.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-2.5' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-i440fx-7.2' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='kvm' name='pc-q35-2.11' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <hostCPU type='tcg' model='base' migratability='yes'>
+ <property name='avx-ne-convert' type='boolean' value='false'/>
+ <property name='vmx-entry-load-rtit-ctl' type='boolean' value='false'/>
+ <property name='svme-addr-chk' type='boolean' value='true' migratable='yes'/>
+ <property name='lfence-always-serializing' type='boolean' value='false'/>
+ <property name='cmov' type='boolean' value='true' migratable='yes'/>
+ <property name='ia64' type='boolean' value='false'/>
+ <property name='ssb-no' type='boolean' value='false'/>
+ <property name='aes' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-apicv-xapic' type='boolean' value='false'/>
+ <property name='mmx' type='boolean' value='true' migratable='yes'/>
+ <property name='rdpid' type='boolean' value='true' migratable='yes'/>
+ <property name='arat' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-page-walk-4' type='boolean' value='false'/>
+ <property name='vmx-page-walk-5' type='boolean' value='false'/>
+ <property name='gfni' type='boolean' value='false'/>
+ <property name='ibrs-all' type='boolean' value='false'/>
+ <property name='vmx-desc-exit' type='boolean' value='false'/>
+ <property name='pause-filter' type='boolean' value='false'/>
+ <property name='mcdt-no' type='boolean' value='false'/>
+ <property name='bus-lock-detect' type='boolean' value='false'/>
+ <property name='xsavec' type='boolean' value='false'/>
+ <property name='intel-pt' type='boolean' value='false'/>
+ <property name='vmx-tsc-scaling' type='boolean' value='false'/>
+ <property name='prefetchiti' type='boolean' value='false'/>
+ <property name='vmx-cr8-store-exit' type='boolean' value='false'/>
+ <property name='vmx-rdseed-exit' type='boolean' value='false'/>
+ <property name='amx-fp16' type='boolean' value='false'/>
+ <property name='vmx-eptp-switching' type='boolean' value='false'/>
+ <property name='kvm-asyncpf' type='boolean' value='false'/>
+ <property name='perfctr-core' type='boolean' value='false'/>
+ <property name='mpx' type='boolean' value='true' migratable='yes'/>
+ <property name='auto-ibrs' type='boolean' value='false'/>
+ <property name='pbe' type='boolean' value='false'/>
+ <property name='avx512cd' type='boolean' value='false'/>
+ <property name='decodeassists' type='boolean' value='false'/>
+ <property name='vmx-exit-load-efer' type='boolean' value='false'/>
+ <property name='vmx-exit-clear-bndcfgs' type='boolean' value='false'/>
+ <property name='sse4.1' type='boolean' value='true' migratable='yes'/>
+ <property name='family' type='number' value='0'/>
+ <property name='intel-pt-lip' type='boolean' value='false'/>
+ <property name='vmx-vmwrite-vmexit-fields' type='boolean' value='false'/>
+ <property name='kvm-asyncpf-int' type='boolean' value='false'/>
+ <property name='vmx-vnmi' type='boolean' value='false'/>
+ <property name='vmx-true-ctls' type='boolean' value='false'/>
+ <property name='vmx-ept-execonly' type='boolean' value='false'/>
+ <property name='vmx-exit-save-efer' type='boolean' value='false'/>
+ <property name='vmx-invept-all-context' type='boolean' value='false'/>
+ <property name='wbnoinvd' type='boolean' value='true' migratable='yes'/>
+ <property name='avx512f' type='boolean' value='false'/>
+ <property name='rfds-no' type='boolean' value='false'/>
+ <property name='msr' type='boolean' value='true' migratable='yes'/>
+ <property name='mce' type='boolean' value='true' migratable='yes'/>
+ <property name='mca' type='boolean' value='true' migratable='yes'/>
+ <property name='xcrypt' type='boolean' value='false'/>
+ <property name='sgx' type='boolean' value='false'/>
+ <property name='vmx-exit-load-pat' type='boolean' value='false'/>
+ <property name='vmx-intr-exit' type='boolean' value='false'/>
+ <property name='min-level' type='number' value='13'/>
+ <property name='vmx-flexpriority' type='boolean' value='false'/>
+ <property name='xgetbv1' type='boolean' value='true' migratable='yes'/>
+ <property name='cid' type='boolean' value='false'/>
+ <property name='sgx-exinfo' type='boolean' value='false'/>
+ <property name='amd-psfd' type='boolean' value='false'/>
+ <property name='gds-no' type='boolean' value='false'/>
+ <property name='ds' type='boolean' value='false'/>
+ <property name='fxsr' type='boolean' value='true' migratable='yes'/>
+ <property name='avx512-fp16' type='boolean' value='false'/>
+ <property name='avx512-bf16' type='boolean' value='false'/>
+ <property name='vmx-cr8-load-exit' type='boolean' value='false'/>
+ <property name='xsaveopt' type='boolean' value='true' migratable='yes'/>
+ <property name='arch-lbr' type='boolean' value='false'/>
+ <property name='vmx-apicv-vid' type='boolean' value='false'/>
+ <property name='vmx-exit-save-pat' type='boolean' value='false'/>
+ <property name='xtpr' type='boolean' value='false'/>
+ <property name='tsx-ctrl' type='boolean' value='false'/>
+ <property name='vmx-ple' type='boolean' value='false'/>
+ <property name='avx512vl' type='boolean' value='false'/>
+ <property name='avx512-vpopcntdq' type='boolean' value='false'/>
+ <property name='phe' type='boolean' value='false'/>
+ <property name='extapic' type='boolean' value='false'/>
+ <property name='3dnowprefetch' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-vmfunc' type='boolean' value='false'/>
+ <property name='vmx-activity-shutdown' type='boolean' value='false'/>
+ <property name='sgx1' type='boolean' value='false'/>
+ <property name='sgx2' type='boolean' value='false'/>
+ <property name='avx512vbmi2' type='boolean' value='false'/>
+ <property name='cr8legacy' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-encls-exit' type='boolean' value='false'/>
+ <property name='null-sel-clr-base' type='boolean' value='false'/>
+ <property name='stibp' type='boolean' value='false'/>
+ <property name='vmx-msr-bitmap' type='boolean' value='false'/>
+ <property name='xcrypt-en' type='boolean' value='false'/>
+ <property name='vmx-mwait-exit' type='boolean' value='false'/>
+ <property name='vmx-pml' type='boolean' value='false'/>
+ <property name='vmx-nmi-exit' type='boolean' value='false'/>
+ <property name='amx-tile' type='boolean' value='false'/>
+ <property name='vmx-invept-single-context-noglobals' type='boolean' value='false'/>
+ <property name='pn' type='boolean' value='false'/>
+ <property name='rsba' type='boolean' value='false'/>
+ <property name='dca' type='boolean' value='false'/>
+ <property name='vendor' type='string' value='AuthenticAMD'/>
+ <property name='vmx-unrestricted-guest' type='boolean' value='false'/>
+ <property name='vmx-cr3-store-noexit' type='boolean' value='false'/>
+ <property name='pku' type='boolean' value='true' migratable='yes'/>
+ <property name='pks' type='boolean' value='true' migratable='yes'/>
+ <property name='smx' type='boolean' value='false'/>
+ <property name='cmp-legacy' type='boolean' value='false'/>
+ <property name='avx512-4fmaps' type='boolean' value='false'/>
+ <property name='vmcb-clean' type='boolean' value='false'/>
+ <property name='hle' type='boolean' value='false'/>
+ <property name='avx-vnni' type='boolean' value='false'/>
+ <property name='3dnowext' type='boolean' value='true' migratable='yes'/>
+ <property name='amd-no-ssb' type='boolean' value='false'/>
+ <property name='npt' type='boolean' value='true' migratable='yes'/>
+ <property name='sgxlc' type='boolean' value='false'/>
+ <property name='rdctl-no' type='boolean' value='false'/>
+ <property name='vmx-invvpid' type='boolean' value='false'/>
+ <property name='clwb' type='boolean' value='true' migratable='yes'/>
+ <property name='lbrv' type='boolean' value='false'/>
+ <property name='adx' type='boolean' value='true' migratable='yes'/>
+ <property name='ss' type='boolean' value='true' migratable='yes'/>
+ <property name='pni' type='boolean' value='true' migratable='yes'/>
+ <property name='tsx-ldtrk' type='boolean' value='false'/>
+ <property name='svm-lock' type='boolean' value='false'/>
+ <property name='smep' type='boolean' value='true' migratable='yes'/>
+ <property name='smap' type='boolean' value='true' migratable='yes'/>
+ <property name='pfthreshold' type='boolean' value='false'/>
+ <property name='vmx-invpcid-exit' type='boolean' value='false'/>
+ <property name='amx-int8' type='boolean' value='false'/>
+ <property name='x2apic' type='boolean' value='true' migratable='yes'/>
+ <property name='avx512vbmi' type='boolean' value='false'/>
+ <property name='avx512vnni' type='boolean' value='false'/>
+ <property name='sgx-edeccssa' type='boolean' value='false'/>
+ <property name='vmx-apicv-x2apic' type='boolean' value='false'/>
+ <property name='kvm-pv-sched-yield' type='boolean' value='false'/>
+ <property name='vmx-invlpg-exit' type='boolean' value='false'/>
+ <property name='no-nested-data-bp' type='boolean' value='false'/>
+ <property name='vmx-invvpid-all-context' type='boolean' value='false'/>
+ <property name='vmx-activity-hlt' type='boolean' value='false'/>
+ <property name='flushbyasid' type='boolean' value='false'/>
+ <property name='f16c' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-exit-ack-intr' type='boolean' value='false'/>
+ <property name='ace2-en' type='boolean' value='false'/>
+ <property name='pae' type='boolean' value='true' migratable='yes'/>
+ <property name='pat' type='boolean' value='true' migratable='yes'/>
+ <property name='sse' type='boolean' value='true' migratable='yes'/>
+ <property name='phe-en' type='boolean' value='false'/>
+ <property name='vmx-tsc-offset' type='boolean' value='false'/>
+ <property name='kvm-nopiodelay' type='boolean' value='false'/>
+ <property name='tm' type='boolean' value='false'/>
+ <property name='fbsdp-no' type='boolean' value='false'/>
+ <property name='kvmclock-stable-bit' type='boolean' value='false'/>
+ <property name='vmx-rdtsc-exit' type='boolean' value='false'/>
+ <property name='hypervisor' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-rdtscp-exit' type='boolean' value='false'/>
+ <property name='mds-no' type='boolean' value='false'/>
+ <property name='pcommit' type='boolean' value='false'/>
+ <property name='vmx-vpid' type='boolean' value='false'/>
+ <property name='syscall' type='boolean' value='true' migratable='yes'/>
+ <property name='kvm-asyncpf-vmexit' type='boolean' value='false'/>
+ <property name='avx512dq' type='boolean' value='false'/>
+ <property name='svm' type='boolean' value='true' migratable='yes'/>
+ <property name='invtsc' type='boolean' value='false'/>
+ <property name='vmx-monitor-exit' type='boolean' value='false'/>
+ <property name='sse2' type='boolean' value='true' migratable='yes'/>
+ <property name='ssbd' type='boolean' value='false'/>
+ <property name='vmx-wbinvd-exit' type='boolean' value='false'/>
+ <property name='est' type='boolean' value='false'/>
+ <property name='kvm-poll-control' type='boolean' value='false'/>
+ <property name='avx512ifma' type='boolean' value='false'/>
+ <property name='tm2' type='boolean' value='false'/>
+ <property name='kvm-pv-eoi' type='boolean' value='false'/>
+ <property name='kvm-pv-ipi' type='boolean' value='false'/>
+ <property name='cx8' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-invvpid-single-addr' type='boolean' value='false'/>
+ <property name='waitpkg' type='boolean' value='false'/>
+ <property name='cldemote' type='boolean' value='false'/>
+ <property name='sgx-tokenkey' type='boolean' value='false'/>
+ <property name='vmx-ept' type='boolean' value='false'/>
+ <property name='pbrsb-no' type='boolean' value='false'/>
+ <property name='xfd' type='boolean' value='false'/>
+ <property name='kvm-mmu' type='boolean' value='false'/>
+ <property name='sse4.2' type='boolean' value='true' migratable='yes'/>
+ <property name='pge' type='boolean' value='true' migratable='yes'/>
+ <property name='avx512bitalg' type='boolean' value='false'/>
+ <property name='pdcm' type='boolean' value='false'/>
+ <property name='vmx-entry-load-bndcfgs' type='boolean' value='false'/>
+ <property name='vmx-exit-clear-rtit-ctl' type='boolean' value='false'/>
+ <property name='stibp-always-on' type='boolean' value='false'/>
+ <property name='model' type='number' value='0'/>
+ <property name='movbe' type='boolean' value='true' migratable='yes'/>
+ <property name='nrip-save' type='boolean' value='false'/>
+ <property name='ssse3' type='boolean' value='true' migratable='yes'/>
+ <property name='sse4a' type='boolean' value='true' migratable='yes'/>
+ <property name='kvm-msi-ext-dest-id' type='boolean' value='false'/>
+ <property name='vmx-pause-exit' type='boolean' value='false'/>
+ <property name='invpcid' type='boolean' value='false'/>
+ <property name='sgx-debug' type='boolean' value='false'/>
+ <property name='pdpe1gb' type='boolean' value='true' migratable='yes'/>
+ <property name='sgx-mode64' type='boolean' value='false'/>
+ <property name='tsc-deadline' type='boolean' value='false'/>
+ <property name='skip-l1dfl-vmentry' type='boolean' value='false'/>
+ <property name='vmx-exit-load-perf-global-ctrl' type='boolean' value='false'/>
+ <property name='fma' type='boolean' value='true' migratable='yes'/>
+ <property name='lam' type='boolean' value='false'/>
+ <property name='cx16' type='boolean' value='true' migratable='yes'/>
+ <property name='de' type='boolean' value='true' migratable='yes'/>
+ <property name='fzrm' type='boolean' value='true' migratable='yes'/>
+ <property name='avx-ifma' type='boolean' value='false'/>
+ <property name='stepping' type='number' value='0'/>
+ <property name='xsave' type='boolean' value='true' migratable='yes'/>
+ <property name='clflush' type='boolean' value='true' migratable='yes'/>
+ <property name='skinit' type='boolean' value='false'/>
+ <property name='avx-vnni-int8' type='boolean' value='false'/>
+ <property name='tsc' type='boolean' value='true' migratable='yes'/>
+ <property name='tce' type='boolean' value='false'/>
+ <property name='flush-l1d' type='boolean' value='false'/>
+ <property name='fpu' type='boolean' value='true' migratable='yes'/>
+ <property name='ds-cpl' type='boolean' value='false'/>
+ <property name='ibs' type='boolean' value='false'/>
+ <property name='fma4' type='boolean' value='false'/>
+ <property name='vmx-exit-nosave-debugctl' type='boolean' value='false'/>
+ <property name='sgx-kss' type='boolean' value='false'/>
+ <property name='la57' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-invept' type='boolean' value='false'/>
+ <property name='osvw' type='boolean' value='false'/>
+ <property name='rfds-clear' type='boolean' value='false'/>
+ <property name='apic' type='boolean' value='true' migratable='yes'/>
+ <property name='pmm' type='boolean' value='false'/>
+ <property name='vmx-entry-noload-debugctl' type='boolean' value='false'/>
+ <property name='vmx-eptad' type='boolean' value='false'/>
+ <property name='spec-ctrl' type='boolean' value='false'/>
+ <property name='vmx-posted-intr' type='boolean' value='false'/>
+ <property name='vmx-apicv-register' type='boolean' value='false'/>
+ <property name='tsc-adjust' type='boolean' value='false'/>
+ <property name='vnmi' type='boolean' value='false'/>
+ <property name='kvm-steal-time' type='boolean' value='false'/>
+ <property name='psdp-no' type='boolean' value='false'/>
+ <property name='vmx-any-errcode' type='boolean' value='false'/>
+ <property name='avx512-vp2intersect' type='boolean' value='false'/>
+ <property name='kvmclock' type='boolean' value='false'/>
+ <property name='vmx-zero-len-inject' type='boolean' value='false'/>
+ <property name='amx-complex' type='boolean' value='false'/>
+ <property name='pschange-mc-no' type='boolean' value='false'/>
+ <property name='v-vmsave-vmload' type='boolean' value='false'/>
+ <property name='vmx-rdrand-exit' type='boolean' value='false'/>
+ <property name='sgx-provisionkey' type='boolean' value='false'/>
+ <property name='lwp' type='boolean' value='false'/>
+ <property name='amd-ssbd' type='boolean' value='false'/>
+ <property name='xop' type='boolean' value='false'/>
+ <property name='ibpb' type='boolean' value='false'/>
+ <property name='ibrs' type='boolean' value='false'/>
+ <property name='avx' type='boolean' value='true' migratable='yes'/>
+ <property name='core-capability' type='boolean' value='false'/>
+ <property name='vmx-invept-single-context' type='boolean' value='false'/>
+ <property name='movdiri' type='boolean' value='false'/>
+ <property name='acpi' type='boolean' value='true' migratable='yes'/>
+ <property name='avx512bw' type='boolean' value='false'/>
+ <property name='ace2' type='boolean' value='false'/>
+ <property name='fsgsbase' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-ept-2mb' type='boolean' value='false'/>
+ <property name='vmx-ept-1gb' type='boolean' value='false'/>
+ <property name='ht' type='boolean' value='false'/>
+ <property name='vmx-io-exit' type='boolean' value='false'/>
+ <property name='nx' type='boolean' value='true' migratable='yes'/>
+ <property name='pclmulqdq' type='boolean' value='true' migratable='yes'/>
+ <property name='mmxext' type='boolean' value='true' migratable='yes'/>
+ <property name='popcnt' type='boolean' value='true' migratable='yes'/>
+ <property name='vaes' type='boolean' value='true' migratable='yes'/>
+ <property name='serialize' type='boolean' value='false'/>
+ <property name='movdir64b' type='boolean' value='false'/>
+ <property name='xsaves' type='boolean' value='false'/>
+ <property name='vmx-shadow-vmcs' type='boolean' value='false'/>
+ <property name='lm' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-exit-save-preemption-timer' type='boolean' value='false'/>
+ <property name='vmx-entry-load-pat' type='boolean' value='false'/>
+ <property name='fsrm' type='boolean' value='true' migratable='yes'/>
+ <property name='fsrs' type='boolean' value='true' migratable='yes'/>
+ <property name='fsrc' type='boolean' value='true' migratable='yes'/>
+ <property name='sbdr-ssdp-no' type='boolean' value='false'/>
+ <property name='vmx-entry-load-perf-global-ctrl' type='boolean' value='false'/>
+ <property name='vmx-io-bitmap' type='boolean' value='false'/>
+ <property name='umip' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-store-lma' type='boolean' value='false'/>
+ <property name='vmx-movdr-exit' type='boolean' value='false'/>
+ <property name='pse' type='boolean' value='true' migratable='yes'/>
+ <property name='avx2' type='boolean' value='true' migratable='yes'/>
+ <property name='avic' type='boolean' value='false'/>
+ <property name='sep' type='boolean' value='true' migratable='yes'/>
+ <property name='virt-ssbd' type='boolean' value='false'/>
+ <property name='vmx-cr3-load-noexit' type='boolean' value='false'/>
+ <property name='nodeid-msr' type='boolean' value='false'/>
+ <property name='md-clear' type='boolean' value='false'/>
+ <property name='misalignsse' type='boolean' value='false'/>
+ <property name='split-lock-detect' type='boolean' value='false'/>
+ <property name='min-xlevel' type='number' value='2147483658'/>
+ <property name='bmi1' type='boolean' value='true' migratable='yes'/>
+ <property name='bmi2' type='boolean' value='true' migratable='yes'/>
+ <property name='kvm-pv-unhalt' type='boolean' value='false'/>
+ <property name='tsc-scale' type='boolean' value='false'/>
+ <property name='topoext' type='boolean' value='false'/>
+ <property name='amd-stibp' type='boolean' value='false'/>
+ <property name='vmx-preemption-timer' type='boolean' value='false'/>
+ <property name='clflushopt' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-entry-load-pkrs' type='boolean' value='false'/>
+ <property name='vmx-vnmi-pending' type='boolean' value='false'/>
+ <property name='monitor' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-vintr-pending' type='boolean' value='false'/>
+ <property name='avx512er' type='boolean' value='false'/>
+ <property name='full-width-write' type='boolean' value='false'/>
+ <property name='pmm-en' type='boolean' value='false'/>
+ <property name='pcid' type='boolean' value='false'/>
+ <property name='taa-no' type='boolean' value='false'/>
+ <property name='arch-capabilities' type='boolean' value='false'/>
+ <property name='vgif' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-secondary-ctls' type='boolean' value='false'/>
+ <property name='vmx-xsaves' type='boolean' value='false'/>
+ <property name='clzero' type='boolean' value='false'/>
+ <property name='3dnow' type='boolean' value='true' migratable='yes'/>
+ <property name='erms' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-entry-ia32e-mode' type='boolean' value='false'/>
+ <property name='lahf-lm' type='boolean' value='true' migratable='yes'/>
+ <property name='vpclmulqdq' type='boolean' value='false'/>
+ <property name='vmx-ins-outs' type='boolean' value='false'/>
+ <property name='fxsr-opt' type='boolean' value='false'/>
+ <property name='xstore' type='boolean' value='false'/>
+ <property name='rtm' type='boolean' value='false'/>
+ <property name='kvm-hint-dedicated' type='boolean' value='false'/>
+ <property name='sgx-aex-notify' type='boolean' value='false'/>
+ <property name='amx-bf16' type='boolean' value='false'/>
+ <property name='lmce' type='boolean' value='false'/>
+ <property name='perfctr-nb' type='boolean' value='false'/>
+ <property name='rdrand' type='boolean' value='true' migratable='yes'/>
+ <property name='rdseed' type='boolean' value='true' migratable='yes'/>
+ <property name='cmpccxadd' type='boolean' value='true' migratable='yes'/>
+ <property name='avx512-4vnniw' type='boolean' value='false'/>
+ <property name='vme' type='boolean' value='false'/>
+ <property name='vmx' type='boolean' value='false'/>
+ <property name='dtes64' type='boolean' value='false'/>
+ <property name='mtrr' type='boolean' value='true' migratable='yes'/>
+ <property name='rdtscp' type='boolean' value='true' migratable='yes'/>
+ <property name='xsaveerptr' type='boolean' value='true' migratable='yes'/>
+ <property name='pse36' type='boolean' value='true' migratable='yes'/>
+ <property name='kvm-pv-tlb-flush' type='boolean' value='false'/>
+ <property name='vmx-activity-wait-sipi' type='boolean' value='false'/>
+ <property name='tbm' type='boolean' value='false'/>
+ <property name='wdt' type='boolean' value='false'/>
+ <property name='vmx-rdpmc-exit' type='boolean' value='false'/>
+ <property name='vmx-mtf' type='boolean' value='false'/>
+ <property name='vmx-entry-load-efer' type='boolean' value='false'/>
+ <property name='model-id' type='string' value='QEMU TCG CPU version 2.5+'/>
+ <property name='sha-ni' type='boolean' value='true' migratable='yes'/>
+ <property name='fb-clear' type='boolean' value='false'/>
+ <property name='vmx-exit-load-pkrs' type='boolean' value='false'/>
+ <property name='abm' type='boolean' value='true' migratable='yes'/>
+ <property name='vmx-ept-advanced-exitinfo' type='boolean' value='false'/>
+ <property name='vmx-enable-user-wait-pause' type='boolean' value='false'/>
+ <property name='avx512pf' type='boolean' value='false'/>
+ <property name='vmx-hlt-exit' type='boolean' value='false'/>
+ <property name='xstore-en' type='boolean' value='false'/>
+ </hostCPU>
+ <cpu type='tcg' name='max' typename='max-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='host' typename='host-x86_64-cpu' usable='no'>
+ <blocker name='kvm'/>
+ </cpu>
+ <cpu type='tcg' name='base' typename='base-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='qemu64-v1' typename='qemu64-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='qemu64' typename='qemu64-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='qemu32-v1' typename='qemu32-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='qemu32' typename='qemu32-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='phenom-v1' typename='phenom-v1-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ </cpu>
+ <cpu type='tcg' name='phenom' typename='phenom-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ </cpu>
+ <cpu type='tcg' name='pentium3-v1' typename='pentium3-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='pentium3' typename='pentium3-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='pentium2-v1' typename='pentium2-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='pentium2' typename='pentium2-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='pentium-v1' typename='pentium-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='pentium' typename='pentium-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='n270-v1' typename='n270-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='n270' typename='n270-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='kvm64-v1' typename='kvm64-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='kvm64' typename='kvm64-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='kvm32-v1' typename='kvm32-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='kvm32' typename='kvm32-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='coreduo-v1' typename='coreduo-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='coreduo' typename='coreduo-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='core2duo-v1' typename='core2duo-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='core2duo' typename='core2duo-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='athlon-v1' typename='athlon-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='athlon' typename='athlon-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='Westmere-v2' typename='Westmere-v2-x86_64-cpu' usable='no'>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Westmere-v1' typename='Westmere-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='Westmere-IBRS' typename='Westmere-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Westmere' typename='Westmere-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='Snowridge-v4' typename='Snowridge-v4-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='gfni'/>
+ <blocker name='cldemote'/>
+ <blocker name='movdiri'/>
+ <blocker name='movdir64b'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='Snowridge-v3' typename='Snowridge-v3-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='gfni'/>
+ <blocker name='cldemote'/>
+ <blocker name='movdiri'/>
+ <blocker name='movdir64b'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='core-capability'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ <blocker name='split-lock-detect'/>
+ </cpu>
+ <cpu type='tcg' name='Snowridge-v2' typename='Snowridge-v2-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='gfni'/>
+ <blocker name='cldemote'/>
+ <blocker name='movdiri'/>
+ <blocker name='movdir64b'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='core-capability'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ <blocker name='split-lock-detect'/>
+ </cpu>
+ <cpu type='tcg' name='Snowridge-v1' typename='Snowridge-v1-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='gfni'/>
+ <blocker name='cldemote'/>
+ <blocker name='movdiri'/>
+ <blocker name='movdir64b'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='core-capability'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ <blocker name='split-lock-detect'/>
+ </cpu>
+ <cpu type='tcg' name='Snowridge' typename='Snowridge-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='gfni'/>
+ <blocker name='cldemote'/>
+ <blocker name='movdiri'/>
+ <blocker name='movdir64b'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='core-capability'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ <blocker name='split-lock-detect'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Server-v5' typename='Skylake-Server-v5-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Server-v4' typename='Skylake-Server-v4-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Server-v3' typename='Skylake-Server-v3-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Server-v2' typename='Skylake-Server-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Server-v1' typename='Skylake-Server-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Server-noTSX-IBRS' typename='Skylake-Server-noTSX-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Server-IBRS' typename='Skylake-Server-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Server' typename='Skylake-Server-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Client-v4' typename='Skylake-Client-v4-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Client-v3' typename='Skylake-Client-v3-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Client-v2' typename='Skylake-Client-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Client-v1' typename='Skylake-Client-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Client-noTSX-IBRS' typename='Skylake-Client-noTSX-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Client-IBRS' typename='Skylake-Client-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Client' typename='Skylake-Client-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='SierraForest-v1' typename='SierraForest-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='serialize'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='avx-ifma'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ <blocker name='avx-vnni-int8'/>
+ <blocker name='avx-ne-convert'/>
+ <blocker name='mcdt-no'/>
+ </cpu>
+ <cpu type='tcg' name='SierraForest' typename='SierraForest-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='serialize'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='avx-ifma'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ <blocker name='avx-vnni-int8'/>
+ <blocker name='avx-ne-convert'/>
+ <blocker name='mcdt-no'/>
+ </cpu>
+ <cpu type='tcg' name='SapphireRapids-v3' typename='SapphireRapids-v3-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='tsc-adjust'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='cldemote'/>
+ <blocker name='movdiri'/>
+ <blocker name='movdir64b'/>
+ <blocker name='serialize'/>
+ <blocker name='tsx-ldtrk'/>
+ <blocker name='amx-bf16'/>
+ <blocker name='avx512-fp16'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-int8'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ <blocker name='xfd'/>
+ </cpu>
+ <cpu type='tcg' name='SapphireRapids-v2' typename='SapphireRapids-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='serialize'/>
+ <blocker name='tsx-ldtrk'/>
+ <blocker name='amx-bf16'/>
+ <blocker name='avx512-fp16'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-int8'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ <blocker name='xfd'/>
+ </cpu>
+ <cpu type='tcg' name='SapphireRapids-v1' typename='SapphireRapids-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='serialize'/>
+ <blocker name='tsx-ldtrk'/>
+ <blocker name='amx-bf16'/>
+ <blocker name='avx512-fp16'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-int8'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ <blocker name='xfd'/>
+ </cpu>
+ <cpu type='tcg' name='SapphireRapids' typename='SapphireRapids-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='serialize'/>
+ <blocker name='tsx-ldtrk'/>
+ <blocker name='amx-bf16'/>
+ <blocker name='avx512-fp16'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-int8'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ <blocker name='xfd'/>
+ </cpu>
+ <cpu type='tcg' name='SandyBridge-v2' typename='SandyBridge-v2-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='SandyBridge-v1' typename='SandyBridge-v1-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ </cpu>
+ <cpu type='tcg' name='SandyBridge-IBRS' typename='SandyBridge-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='SandyBridge' typename='SandyBridge-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ </cpu>
+ <cpu type='tcg' name='Penryn-v1' typename='Penryn-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='Penryn' typename='Penryn-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='Opteron_G5-v1' typename='Opteron_G5-v1-x86_64-cpu' usable='no'>
+ <blocker name='misalignsse'/>
+ <blocker name='xop'/>
+ <blocker name='fma4'/>
+ <blocker name='tbm'/>
+ <blocker name='nrip-save'/>
+ </cpu>
+ <cpu type='tcg' name='Opteron_G5' typename='Opteron_G5-x86_64-cpu' usable='no'>
+ <blocker name='misalignsse'/>
+ <blocker name='xop'/>
+ <blocker name='fma4'/>
+ <blocker name='tbm'/>
+ <blocker name='nrip-save'/>
+ </cpu>
+ <cpu type='tcg' name='Opteron_G4-v1' typename='Opteron_G4-v1-x86_64-cpu' usable='no'>
+ <blocker name='misalignsse'/>
+ <blocker name='xop'/>
+ <blocker name='fma4'/>
+ <blocker name='nrip-save'/>
+ </cpu>
+ <cpu type='tcg' name='Opteron_G4' typename='Opteron_G4-x86_64-cpu' usable='no'>
+ <blocker name='misalignsse'/>
+ <blocker name='xop'/>
+ <blocker name='fma4'/>
+ <blocker name='nrip-save'/>
+ </cpu>
+ <cpu type='tcg' name='Opteron_G3-v1' typename='Opteron_G3-v1-x86_64-cpu' usable='no'>
+ <blocker name='misalignsse'/>
+ </cpu>
+ <cpu type='tcg' name='Opteron_G3' typename='Opteron_G3-x86_64-cpu' usable='no'>
+ <blocker name='misalignsse'/>
+ </cpu>
+ <cpu type='tcg' name='Opteron_G2-v1' typename='Opteron_G2-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='Opteron_G2' typename='Opteron_G2-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='Opteron_G1-v1' typename='Opteron_G1-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='Opteron_G1' typename='Opteron_G1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='Nehalem-v2' typename='Nehalem-v2-x86_64-cpu' usable='no'>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Nehalem-v1' typename='Nehalem-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='Nehalem-IBRS' typename='Nehalem-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Nehalem' typename='Nehalem-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='KnightsMill-v1' typename='KnightsMill-v1-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512pf'/>
+ <blocker name='avx512er'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='avx512-4vnniw'/>
+ <blocker name='avx512-4fmaps'/>
+ </cpu>
+ <cpu type='tcg' name='KnightsMill' typename='KnightsMill-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512pf'/>
+ <blocker name='avx512er'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='avx512-4vnniw'/>
+ <blocker name='avx512-4fmaps'/>
+ </cpu>
+ <cpu type='tcg' name='IvyBridge-v2' typename='IvyBridge-v2-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='IvyBridge-v1' typename='IvyBridge-v1-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ </cpu>
+ <cpu type='tcg' name='IvyBridge-IBRS' typename='IvyBridge-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='IvyBridge' typename='IvyBridge-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ </cpu>
+ <cpu type='tcg' name='Icelake-Server-v7' typename='Icelake-Server-v7-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='Icelake-Server-v6' typename='Icelake-Server-v6-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='Icelake-Server-v5' typename='Icelake-Server-v5-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='Icelake-Server-v4' typename='Icelake-Server-v4-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Icelake-Server-v3' typename='Icelake-Server-v3-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Icelake-Server-v2' typename='Icelake-Server-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Icelake-Server-v1' typename='Icelake-Server-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Icelake-Server-noTSX' typename='Icelake-Server-noTSX-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Icelake-Server' typename='Icelake-Server-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Haswell-v4' typename='Haswell-v4-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Haswell-v3' typename='Haswell-v3-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Haswell-v2' typename='Haswell-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ </cpu>
+ <cpu type='tcg' name='Haswell-v1' typename='Haswell-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ </cpu>
+ <cpu type='tcg' name='Haswell-noTSX-IBRS' typename='Haswell-noTSX-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Haswell-noTSX' typename='Haswell-noTSX-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ </cpu>
+ <cpu type='tcg' name='Haswell-IBRS' typename='Haswell-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Haswell' typename='Haswell-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ </cpu>
+ <cpu type='tcg' name='GraniteRapids-v1' typename='GraniteRapids-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='serialize'/>
+ <blocker name='tsx-ldtrk'/>
+ <blocker name='amx-bf16'/>
+ <blocker name='avx512-fp16'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-int8'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='amx-fp16'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ <blocker name='xfd'/>
+ <blocker name='prefetchiti'/>
+ <blocker name='mcdt-no'/>
+ </cpu>
+ <cpu type='tcg' name='GraniteRapids' typename='GraniteRapids-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='bus-lock-detect'/>
+ <blocker name='serialize'/>
+ <blocker name='tsx-ldtrk'/>
+ <blocker name='amx-bf16'/>
+ <blocker name='avx512-fp16'/>
+ <blocker name='amx-tile'/>
+ <blocker name='amx-int8'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='avx-vnni'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='amx-fp16'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ <blocker name='xfd'/>
+ <blocker name='prefetchiti'/>
+ <blocker name='mcdt-no'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-v4' typename='EPYC-v4-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='perfctr-core'/>
+ <blocker name='clzero'/>
+ <blocker name='ibpb'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-v3' typename='EPYC-v3-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='perfctr-core'/>
+ <blocker name='clzero'/>
+ <blocker name='ibpb'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-v2' typename='EPYC-v2-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='ibpb'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-v1' typename='EPYC-v1-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-Rome-v4' typename='EPYC-Rome-v4-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='perfctr-core'/>
+ <blocker name='clzero'/>
+ <blocker name='ibpb'/>
+ <blocker name='ibrs'/>
+ <blocker name='amd-stibp'/>
+ <blocker name='amd-ssbd'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-Rome-v3' typename='EPYC-Rome-v3-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='perfctr-core'/>
+ <blocker name='clzero'/>
+ <blocker name='ibpb'/>
+ <blocker name='ibrs'/>
+ <blocker name='amd-stibp'/>
+ <blocker name='amd-ssbd'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-Rome-v2' typename='EPYC-Rome-v2-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='perfctr-core'/>
+ <blocker name='clzero'/>
+ <blocker name='ibpb'/>
+ <blocker name='ibrs'/>
+ <blocker name='amd-stibp'/>
+ <blocker name='amd-ssbd'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-Rome-v1' typename='EPYC-Rome-v1-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='perfctr-core'/>
+ <blocker name='clzero'/>
+ <blocker name='ibpb'/>
+ <blocker name='amd-stibp'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-Rome' typename='EPYC-Rome-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='perfctr-core'/>
+ <blocker name='clzero'/>
+ <blocker name='ibpb'/>
+ <blocker name='amd-stibp'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-Milan-v2' typename='EPYC-Milan-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='invpcid'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='perfctr-core'/>
+ <blocker name='clzero'/>
+ <blocker name='ibpb'/>
+ <blocker name='ibrs'/>
+ <blocker name='amd-stibp'/>
+ <blocker name='stibp-always-on'/>
+ <blocker name='amd-ssbd'/>
+ <blocker name='amd-psfd'/>
+ <blocker name='no-nested-data-bp'/>
+ <blocker name='lfence-always-serializing'/>
+ <blocker name='null-sel-clr-base'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-Milan-v1' typename='EPYC-Milan-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='invpcid'/>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='perfctr-core'/>
+ <blocker name='clzero'/>
+ <blocker name='ibpb'/>
+ <blocker name='ibrs'/>
+ <blocker name='amd-stibp'/>
+ <blocker name='amd-ssbd'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-Milan' typename='EPYC-Milan-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='invpcid'/>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='perfctr-core'/>
+ <blocker name='clzero'/>
+ <blocker name='ibpb'/>
+ <blocker name='ibrs'/>
+ <blocker name='amd-stibp'/>
+ <blocker name='amd-ssbd'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-IBPB' typename='EPYC-IBPB-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='ibpb'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-Genoa-v1' typename='EPYC-Genoa-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='perfctr-core'/>
+ <blocker name='clzero'/>
+ <blocker name='ibpb'/>
+ <blocker name='ibrs'/>
+ <blocker name='amd-stibp'/>
+ <blocker name='stibp-always-on'/>
+ <blocker name='amd-ssbd'/>
+ <blocker name='amd-psfd'/>
+ <blocker name='no-nested-data-bp'/>
+ <blocker name='lfence-always-serializing'/>
+ <blocker name='null-sel-clr-base'/>
+ <blocker name='auto-ibrs'/>
+ <blocker name='nrip-save'/>
+ <blocker name='vnmi'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-Genoa' typename='EPYC-Genoa-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512ifma'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='perfctr-core'/>
+ <blocker name='clzero'/>
+ <blocker name='ibpb'/>
+ <blocker name='ibrs'/>
+ <blocker name='amd-stibp'/>
+ <blocker name='stibp-always-on'/>
+ <blocker name='amd-ssbd'/>
+ <blocker name='amd-psfd'/>
+ <blocker name='no-nested-data-bp'/>
+ <blocker name='lfence-always-serializing'/>
+ <blocker name='null-sel-clr-base'/>
+ <blocker name='auto-ibrs'/>
+ <blocker name='nrip-save'/>
+ <blocker name='vnmi'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC' typename='EPYC-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Dhyana-v2' typename='Dhyana-v2-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='ibpb'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='Dhyana-v1' typename='Dhyana-v1-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='ibpb'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Dhyana' typename='Dhyana-x86_64-cpu' usable='no'>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='ibpb'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Denverton-v3' typename='Denverton-v3-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='Denverton-v2' typename='Denverton-v2-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Denverton-v1' typename='Denverton-v1-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Denverton' typename='Denverton-x86_64-cpu' usable='no'>
+ <blocker name='tsc-deadline'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Cooperlake-v2' typename='Cooperlake-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='stibp'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='Cooperlake-v1' typename='Cooperlake-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='stibp'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Cooperlake' typename='Cooperlake-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='stibp'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='avx512-bf16'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Conroe-v1' typename='Conroe-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='Conroe' typename='Conroe-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='Cascadelake-Server-v5' typename='Cascadelake-Server-v5-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ <blocker name='xsaves'/>
+ </cpu>
+ <cpu type='tcg' name='Cascadelake-Server-v4' typename='Cascadelake-Server-v4-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Cascadelake-Server-v3' typename='Cascadelake-Server-v3-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Cascadelake-Server-v2' typename='Cascadelake-Server-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Cascadelake-Server-v1' typename='Cascadelake-Server-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Cascadelake-Server-noTSX' typename='Cascadelake-Server-noTSX-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Cascadelake-Server' typename='Cascadelake-Server-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='ssbd'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Broadwell-v4' typename='Broadwell-v4-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Broadwell-v3' typename='Broadwell-v3-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Broadwell-v2' typename='Broadwell-v2-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ </cpu>
+ <cpu type='tcg' name='Broadwell-v1' typename='Broadwell-v1-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ </cpu>
+ <cpu type='tcg' name='Broadwell-noTSX-IBRS' typename='Broadwell-noTSX-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Broadwell-noTSX' typename='Broadwell-noTSX-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='invpcid'/>
+ </cpu>
+ <cpu type='tcg' name='Broadwell-IBRS' typename='Broadwell-IBRS-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Broadwell' typename='Broadwell-x86_64-cpu' usable='no'>
+ <blocker name='pcid'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='hle'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ </cpu>
+ <cpu type='tcg' name='486-v1' typename='486-v1-x86_64-cpu' usable='yes'/>
+ <cpu type='tcg' name='486' typename='486-x86_64-cpu' usable='yes'/>
+ <machine type='tcg' name='pc-i440fx-9.1' alias='pc' hotplugCpus='yes' maxCpus='255' default='yes' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-5.2' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-2.12' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-2.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' deprecated='yes' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-6.2' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-4.2' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-2.5' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-4.2' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-5.2' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-2.7' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-9.1' alias='q35' hotplugCpus='yes' maxCpus='4096' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-7.1' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-2.2' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' deprecated='yes' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-8.1' hotplugCpus='yes' maxCpus='1024' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-8.1' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-2.7' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-6.1' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-2.4' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-7.1' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-2.10' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='x-remote' maxCpus='1' acpi='no'/>
+ <machine type='tcg' name='pc-q35-5.1' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-2.9' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-2.11' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-3.1' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-6.1' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-4.1' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-2.4' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-4.1' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-5.1' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-2.9' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='isapc' hotplugCpus='yes' maxCpus='1' defaultCPU='486-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-2.6' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-3.1' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-9.0' hotplugCpus='yes' maxCpus='4096' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-2.12' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-7.0' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-2.1' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' deprecated='yes' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-8.0' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-8.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-6.0' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-2.6' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-9.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-4.0.1' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-7.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-5.0' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-2.8' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-2.10' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-3.0' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-7.2' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-4.0' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-6.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='microvm' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='microvm.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-2.3' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' deprecated='yes' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-8.2' hotplugCpus='yes' maxCpus='1024' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-4.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-8.2' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-5.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-2.8' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-6.2' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-3.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-2.5' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-i440fx-7.2' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' defaultRAMid='pc.ram' acpi='yes'/>
+ <machine type='tcg' name='pc-q35-2.11' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram' acpi='yes'/>
+ <hypervCapabilities supported='yes'>
+ <cap name='relaxed'/>
+ <cap name='vapic'/>
+ <cap name='spinlocks'/>
+ <cap name='vpindex'/>
+ <cap name='runtime'/>
+ <cap name='synic'/>
+ <cap name='stimer'/>
+ <cap name='reset'/>
+ <cap name='vendor_id'/>
+ <cap name='frequencies'/>
+ <cap name='reenlightenment'/>
+ <cap name='tlbflush'/>
+ <cap name='ipi'/>
+ <cap name='avic'/>
+ </hypervCapabilities>
+</qemuCaps>
diff --git a/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-latest.args b/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-latest.args
index c11c2118bf..46900aae7a 100644
--- a/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-latest.args
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
-accel kvm \
--cpu EPYC-Rome,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,stibp=on,arch-capabilities=on,ssbd=on,cmp-legacy=on,amd-ssbd=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,svme-addr-chk=on,lfence-always-serializing=on,null-sel-clr-base=on,rdctl-no=on,skip-l1dfl-vmentry=on,mds-no=on,pschange-mc-no=on,gds-no=on,xsaves=off \
+-cpu EPYC-Rome,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,stibp=on,arch-capabilities=on,ssbd=on,cmp-legacy=on,amd-ssbd=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,flushbyasid=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,svme-addr-chk=on,lfence-always-serializing=on,null-sel-clr-base=on,rdctl-no=on,skip-l1dfl-vmentry=on,mds-no=on,pschange-mc-no=on,gds-no=on,xsaves=off \
-m size=219136k \
-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
-overcommit mem-lock=off \
diff --git a/tests/qemuxmlconfdata/cpu-host-model-fallback-tcg.x86_64-latest.args b/tests/qemuxmlconfdata/cpu-host-model-fallback-tcg.x86_64-latest.args
index 9ae484a748..b0d082b832 100644
--- a/tests/qemuxmlconfdata/cpu-host-model-fallback-tcg.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/cpu-host-model-fallback-tcg.x86_64-latest.args
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
-accel tcg \
--cpu EPYC,monitor=on,x2apic=on,hypervisor=on,acpi=on,ss=on,erms=on,mpx=on,pcommit=on,clwb=on,umip=on,pku=on,vaes=on,la57=on,rdpid=on,pks=on,fsrm=on,cmpccxadd=on,fzrm=on,fsrs=on,fsrc=on,3dnowext=on,3dnow=on,xsaveerptr=on,wbnoinvd=on,npt=on,vgif=on,svme-addr-chk=on,vme=off,xsavec=off,misalignsse=off,osvw=off,topoext=off,fxsr-opt=off,nrip-save=off \
+-cpu EPYC,monitor=on,x2apic=on,hypervisor=on,acpi=on,ss=on,erms=on,mpx=on,clwb=on,umip=on,pku=on,vaes=on,la57=on,rdpid=on,pks=on,fsrm=on,cmpccxadd=on,fzrm=on,fsrs=on,fsrc=on,3dnowext=on,3dnow=on,xsaveerptr=on,wbnoinvd=on,npt=on,vgif=on,svme-addr-chk=on,vme=off,xsavec=off,misalignsse=off,osvw=off,topoext=off,fxsr-opt=off,nrip-save=off \
-m size=219136k \
-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
-overcommit mem-lock=off \
diff --git a/tests/qemuxmlconfdata/cpu-host-model-features.x86_64-latest.args b/tests/qemuxmlconfdata/cpu-host-model-features.x86_64-latest.args
index ae1fe91b7f..c3dc7ec1f6 100644
--- a/tests/qemuxmlconfdata/cpu-host-model-features.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/cpu-host-model-features.x86_64-latest.args
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
-accel kvm \
--cpu EPYC-Rome,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,stibp=on,arch-capabilities=on,ssbd=on,cmp-legacy=on,amd-ssbd=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,svme-addr-chk=on,lfence-always-serializing=on,null-sel-clr-base=on,rdctl-no=on,skip-l1dfl-vmentry=on,mds-no=on,pschange-mc-no=on,gds-no=on,xsaves=off,abm=on,ds=on,invtsc=off \
+-cpu EPYC-Rome,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,stibp=on,arch-capabilities=on,ssbd=on,cmp-legacy=on,amd-ssbd=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,flushbyasid=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,svme-addr-chk=on,lfence-always-serializing=on,null-sel-clr-base=on,rdctl-no=on,skip-l1dfl-vmentry=on,mds-no=on,pschange-mc-no=on,gds-no=on,xsaves=off,abm=on,ds=on,invtsc=off \
-m size=219136k \
-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
-overcommit mem-lock=off \
diff --git a/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-latest.args b/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-latest.args
index a9b8f5a7d4..84ec2fb476 100644
--- a/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-latest.args
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
-machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
-accel kvm \
--cpu EPYC-Rome,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,stibp=on,arch-capabilities=on,ssbd=on,cmp-legacy=on,amd-ssbd=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,svme-addr-chk=on,lfence-always-serializing=on,null-sel-clr-base=on,rdctl-no=on,skip-l1dfl-vmentry=on,mds-no=on,pschange-mc-no=on,gds-no=on,xsaves=off \
+-cpu EPYC-Rome,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,stibp=on,arch-capabilities=on,ssbd=on,cmp-legacy=on,amd-ssbd=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,flushbyasid=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,svme-addr-chk=on,lfence-always-serializing=on,null-sel-clr-base=on,rdctl-no=on,skip-l1dfl-vmentry=on,mds-no=on,pschange-mc-no=on,gds-no=on,xsaves=off \
-m size=219136k \
-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
-overcommit mem-lock=off \
diff --git a/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-latest.args b/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-latest.args
index c11c2118bf..46900aae7a 100644
--- a/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-latest.args
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
-accel kvm \
--cpu EPYC-Rome,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,stibp=on,arch-capabilities=on,ssbd=on,cmp-legacy=on,amd-ssbd=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,svme-addr-chk=on,lfence-always-serializing=on,null-sel-clr-base=on,rdctl-no=on,skip-l1dfl-vmentry=on,mds-no=on,pschange-mc-no=on,gds-no=on,xsaves=off \
+-cpu EPYC-Rome,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,stibp=on,arch-capabilities=on,ssbd=on,cmp-legacy=on,amd-ssbd=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,flushbyasid=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,svme-addr-chk=on,lfence-always-serializing=on,null-sel-clr-base=on,rdctl-no=on,skip-l1dfl-vmentry=on,mds-no=on,pschange-mc-no=on,gds-no=on,xsaves=off \
-m size=219136k \
-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
-overcommit mem-lock=off \
diff --git a/tests/qemuxmlconfdata/cpu-host-model-nofallback-tcg.x86_64-latest.args b/tests/qemuxmlconfdata/cpu-host-model-nofallback-tcg.x86_64-latest.args
index 9ae484a748..b0d082b832 100644
--- a/tests/qemuxmlconfdata/cpu-host-model-nofallback-tcg.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/cpu-host-model-nofallback-tcg.x86_64-latest.args
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
-accel tcg \
--cpu EPYC,monitor=on,x2apic=on,hypervisor=on,acpi=on,ss=on,erms=on,mpx=on,pcommit=on,clwb=on,umip=on,pku=on,vaes=on,la57=on,rdpid=on,pks=on,fsrm=on,cmpccxadd=on,fzrm=on,fsrs=on,fsrc=on,3dnowext=on,3dnow=on,xsaveerptr=on,wbnoinvd=on,npt=on,vgif=on,svme-addr-chk=on,vme=off,xsavec=off,misalignsse=off,osvw=off,topoext=off,fxsr-opt=off,nrip-save=off \
+-cpu EPYC,monitor=on,x2apic=on,hypervisor=on,acpi=on,ss=on,erms=on,mpx=on,clwb=on,umip=on,pku=on,vaes=on,la57=on,rdpid=on,pks=on,fsrm=on,cmpccxadd=on,fzrm=on,fsrs=on,fsrc=on,3dnowext=on,3dnow=on,xsaveerptr=on,wbnoinvd=on,npt=on,vgif=on,svme-addr-chk=on,vme=off,xsavec=off,misalignsse=off,osvw=off,topoext=off,fxsr-opt=off,nrip-save=off \
-m size=219136k \
-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
-overcommit mem-lock=off \
diff --git a/tests/qemuxmlconfdata/cpu-host-model-tcg.x86_64-latest.args b/tests/qemuxmlconfdata/cpu-host-model-tcg.x86_64-latest.args
index 0e7c54f15c..70d04d16de 100644
--- a/tests/qemuxmlconfdata/cpu-host-model-tcg.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/cpu-host-model-tcg.x86_64-latest.args
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
-machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
-accel tcg \
--cpu EPYC,monitor=on,x2apic=on,hypervisor=on,acpi=on,ss=on,erms=on,mpx=on,pcommit=on,clwb=on,umip=on,pku=on,vaes=on,la57=on,rdpid=on,pks=on,fsrm=on,cmpccxadd=on,fzrm=on,fsrs=on,fsrc=on,3dnowext=on,3dnow=on,xsaveerptr=on,wbnoinvd=on,npt=on,vgif=on,svme-addr-chk=on,vme=off,xsavec=off,misalignsse=off,osvw=off,topoext=off,fxsr-opt=off,nrip-save=off \
+-cpu EPYC,monitor=on,x2apic=on,hypervisor=on,acpi=on,ss=on,erms=on,mpx=on,clwb=on,umip=on,pku=on,vaes=on,la57=on,rdpid=on,pks=on,fsrm=on,cmpccxadd=on,fzrm=on,fsrs=on,fsrc=on,3dnowext=on,3dnow=on,xsaveerptr=on,wbnoinvd=on,npt=on,vgif=on,svme-addr-chk=on,vme=off,xsavec=off,misalignsse=off,osvw=off,topoext=off,fxsr-opt=off,nrip-save=off \
-m size=219136k \
-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
-overcommit mem-lock=off \
--
2.45.1
2
1
27 May '24
V4: https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/HX3R…
V3: https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/HOCD…
V2: https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/5RTZ…
This patch series enables libvirt to use nftables rules rather than
iptables *when setting up virtual networks* (it does *not* add
nftables support to the nwfilter driver).
Changes from V4:
* changed the way that default firewall backends are specified in
meson_options.txt/on the meson commandline - instead of using a
#defined constant string, there are now one of these for each
backend that should be tried when none is specified:
#define FIREWALL_BACKEND_DEFAULT_n VIR_FIREWALL_BACKEND_xyzzy
The "n" will be 1-[number of backends], and the code will try each
in ascending order to see if it is usable.
* properly handle the case where network.conf doesn't exist (from
Patch 12/30 in V3)
* In RPM specfile, Require: nftables for Fedora >= 41 /RHEL >= 10,
while continuining to Require: iptables for anything else
(specifically older RHEL/Fedora)
* use VIR_NFTABLES_FORWARD_CHAIN instead of hardcoded "forward" in
array of chains needed for the nftable backend.
The patches that haven't yet gotten an R-B (and/or were changed enough
from V3 to warrant removing the R-B):
12 - network: support setting firewallBackend from network.conf
17 - util: add name attribute to virFirewall (so that the
element in the status XML is appropriately identifiable)
18 - util: new function virFirewallNewFromRollback()
19 - util: new functions virFirewallParseXML() and virFirewallFormat()
24 - network: add an nftables backend for network driver's firewall construction
26: network: prefer the nftables backend over iptables
(I didn't remove the R-B for patch 27 ("require nftables rather than
iptables for newer RHEl/Fedora") for example, because the change is
very small, and was exactly copy-pasted from Daniel's suggestion).
Changes from V3:
* Fixed a bug (newly added in V3) that resulted in the firewall name
attribute not being added to the XML.
* renamed the table to "libvirt_network"
* renamed the chains to be more descriptive, and lower case rather
than all caps.
* eliminated all the guest->host and host->guest rules since they are
redundant in nftables.
Laine Stump (30):
util/network: move viriptables.[ch] from util to network directory
network: move all functions manipulating iptables rules into
network_iptables.c
network: make all iptables functions used only in network_iptables.c
static
util: #define the names used for private packet filter chains
util: change name of virFirewallRule to virFirewallCmd
util: rename virNetFilterAction to iptablesAction, and add
VIR_ENUM_DECL/IMPL
util: check for 0 args when applying iptables rule
util: add -w/--concurrent when applying a FirewallCmd rather than when
building it
util: determine ignoreErrors value when creating virFirewallCmd, not
when applying
util/network: new virFirewallBackend enum
network: add (empty) network.conf file to distribution files
network: support setting firewallBackend from network.conf
network: framework to call backend-specific function to init private
filter chains
util: new functions to support adding individual firewall rollback
commands
util: implement rollback rule autocreation for iptables commands
network: turn on auto-rollback for the rules added for virtual
networks
util: add name attribute to virFirewall
util: new function virFirewallNewFromRollback()
util: new functions virFirewallParseXML() and virFirewallFormat()
conf: add a virFirewall object to virNetworkObj
network: use previously saved list of firewall removal commands
network: save network status when firewall rules are reloaded
meson: stop looking for iptables/ip6tables/ebtables at build time
network: add an nftables backend for network driver's firewall
construction
tests: test cases for nftables backend
network: prefer the nftables backend over iptables
spec: require nftables rather than iptables for newer RHEL/Fedora
network: name the nftables table "libvirt_network" rather than
"libvirt"
network: rename chains used by network driver nftables backend
network: eliminate pointless host input/output rules from nftables
backend
libvirt.spec.in | 9 +-
meson.build | 12 +-
meson_options.txt | 2 +
po/POTFILES | 3 +-
src/conf/virnetworkobj.c | 41 +
src/conf/virnetworkobj.h | 8 +
src/libvirt_private.syms | 58 +-
src/network/bridge_driver.c | 39 +-
src/network/bridge_driver_conf.c | 86 +-
src/network/bridge_driver_conf.h | 3 +
src/network/bridge_driver_linux.c | 630 +------
src/network/bridge_driver_nop.c | 6 +-
src/network/bridge_driver_platform.h | 6 +-
src/network/libvirtd_network.aug | 39 +
src/network/meson.build | 36 +
src/network/network.conf.in | 28 +
src/network/network_iptables.c | 1677 +++++++++++++++++
src/network/network_iptables.h | 30 +
src/network/network_nftables.c | 968 ++++++++++
src/network/network_nftables.h | 28 +
src/network/test_libvirtd_network.aug.in | 5 +
src/nwfilter/nwfilter_ebiptables_driver.c | 1004 +++++-----
src/util/meson.build | 1 -
src/util/virebtables.c | 36 +-
src/util/virfirewall.c | 820 ++++++--
src/util/virfirewall.h | 87 +-
src/util/viriptables.c | 1072 -----------
src/util/viriptables.h | 155 --
.../{base.args => base.iptables} | 0
tests/networkxml2firewalldata/base.nftables | 256 +++
...-linux.args => nat-default-linux.iptables} | 0
.../nat-default-linux.nftables | 144 ++
...pv6-linux.args => nat-ipv6-linux.iptables} | 0
.../nat-ipv6-linux.nftables | 202 ++
...rgs => nat-ipv6-masquerade-linux.iptables} | 0
.../nat-ipv6-masquerade-linux.nftables | 274 +++
...linux.args => nat-many-ips-linux.iptables} | 0
.../nat-many-ips-linux.nftables | 368 ++++
...-linux.args => nat-no-dhcp-linux.iptables} | 0
.../nat-no-dhcp-linux.nftables | 202 ++
...ftp-linux.args => nat-tftp-linux.iptables} | 0
.../nat-tftp-linux.nftables | 144 ++
...inux.args => route-default-linux.iptables} | 0
.../route-default-linux.nftables | 58 +
tests/networkxml2firewalltest.c | 56 +-
tests/virfirewalltest.c | 424 ++---
46 files changed, 6258 insertions(+), 2759 deletions(-)
create mode 100644 src/network/libvirtd_network.aug
create mode 100644 src/network/network.conf.in
create mode 100644 src/network/network_iptables.c
create mode 100644 src/network/network_iptables.h
create mode 100644 src/network/network_nftables.c
create mode 100644 src/network/network_nftables.h
create mode 100644 src/network/test_libvirtd_network.aug.in
delete mode 100644 src/util/viriptables.c
delete mode 100644 src/util/viriptables.h
rename tests/networkxml2firewalldata/{base.args => base.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/base.nftables
rename tests/networkxml2firewalldata/{nat-default-linux.args => nat-default-linux.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/nat-default-linux.nftables
rename tests/networkxml2firewalldata/{nat-ipv6-linux.args => nat-ipv6-linux.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/nat-ipv6-linux.nftables
rename tests/networkxml2firewalldata/{nat-ipv6-masquerade-linux.args => nat-ipv6-masquerade-linux.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/nat-ipv6-masquerade-linux.nftables
rename tests/networkxml2firewalldata/{nat-many-ips-linux.args => nat-many-ips-linux.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/nat-many-ips-linux.nftables
rename tests/networkxml2firewalldata/{nat-no-dhcp-linux.args => nat-no-dhcp-linux.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/nat-no-dhcp-linux.nftables
rename tests/networkxml2firewalldata/{nat-tftp-linux.args => nat-tftp-linux.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/nat-tftp-linux.nftables
rename tests/networkxml2firewalldata/{route-default-linux.args => route-default-linux.iptables} (100%)
create mode 100644 tests/networkxml2firewalldata/route-default-linux.nftables
--
2.45.0
3
46
It started simple - I pointed somebody to debug logs kbase article only
to realize our own examples don't work. And ended up fixing bash
completion. Fans of 'Malcolm in the Middle' know the feeling.
Michal Prívozník (6):
kbase: Use virt-admin daemon-timeout correctly
virt-admin: Make --timeout of daemon-timeout positional argument
bash-completion: Run virsh/virt-admin in quiet mode
vsh: Close stderr among with stdin in cmdComplete
vsh: Restore original rl_line_buffer after completion
vsh: Don't crash when @text is NULL in vshCompleterFilter()
docs/kbase/debuglogs.rst | 4 ++--
docs/manpages/virt-admin.rst | 2 +-
tools/bash-completion/vsh.in | 2 +-
tools/virt-admin.c | 1 +
tools/vsh.c | 16 +++++++++++-----
5 files changed, 16 insertions(+), 9 deletions(-)
--
2.44.1
3
14
Signed-off-by: Laine Stump <laine(a)redhat.com>
---
NEWS.rst | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/NEWS.rst b/NEWS.rst
index 42b0f88128..14505116b1 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -33,6 +33,16 @@ v10.4.0 (unreleased)
``<sound model='virtio'/>``. This model is available from QEMU 8.2.0
onwards.
+ * network: use nftables to setup virtual network firewall rules
+
+ The network driver can now use nftables rules for the virtual
+ network firewalls, rather than iptables. With the standard build
+ options, nftables is preferred over iptables (with fallback to
+ iptables if nftables isn't installed), but this can be modified at
+ build time, or at runtime via the firewall_backend setting in
+ network.conf. (NB: the nwfilter driver still uses
+ ebtables/iptables).
+
* **Improvements**
* **Bug fixes**
--
2.45.0
2
1
The current way of updating a network configuration uses `virsh
net-update` to add, delete or modify entries. But with such a mechansim
one should know if an entry with current info already exists. Adding
modify-or-add option automatically performs either modify or add
depending on the current state.
Resolves: https://gitlab.com/libvirt/libvirt/-/issues/363
Signed-off-by: Abhiram Tilak <atp.exp(a)gmail.com>
---
Changes in v4:
- Fix the variable name mistake `foundEntry` to `foundMatchedEntry`
- Fix the `ip`, not being declared or assigned in required location.
Changes in v3:
- Changed the indexes used to delete or modify instead of `i`.
Changes in v2:
- Removed the modify-or-add functionality for sections
where modify is not applicable.
- Changed the existing implementation of `UpdateIPDHCPHost`,
to avoid code duplication.
- Changed the implementation of modify-or-delete to reassign
the `command` variable instead of using multiple nested conditions.
docs/manpages/virsh.rst | 5 +-
include/libvirt/libvirt-network.h | 12 +--
src/conf/network_conf.c | 143 +++++++++++++++++++++---------
tools/virsh-network.c | 6 +-
4 files changed, 115 insertions(+), 51 deletions(-)
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index fa038e4547..918e6db30c 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -5906,7 +5906,10 @@ changes optionally taking effect immediately, without needing to
destroy and re-start the network.
*command* is one of "add-first", "add-last", "add" (a synonym for
-add-last), "delete", or "modify".
+add-last), "delete", "modify", "modify-or-add" (modify + add-last), or
+"modify-or-add-first". The 'modify-or-add*' commands perform modify or
+add operation depending on the given state, and can be useful for
+scripting.
*section* is one of "bridge", "domain", "ip", "ip-dhcp-host",
"ip-dhcp-range", "forward", "forward-interface", "forward-pf",
diff --git a/include/libvirt/libvirt-network.h b/include/libvirt/libvirt-network.h
index 58591be7ac..bb4468b160 100644
--- a/include/libvirt/libvirt-network.h
+++ b/include/libvirt/libvirt-network.h
@@ -176,11 +176,13 @@ int virNetworkUndefine (virNetworkPtr network);
* Since: 0.10.2
*/
typedef enum {
- VIR_NETWORK_UPDATE_COMMAND_NONE = 0, /* invalid (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_MODIFY = 1, /* modify an existing element (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_DELETE = 2, /* delete an existing element (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_ADD_LAST = 3, /* add an element at end of list (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST = 4, /* add an element at start of list (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_NONE = 0, /* invalid (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_MODIFY = 1, /* modify an existing element (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_DELETE = 2, /* delete an existing element (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_ADD_LAST = 3, /* add an element at end of list (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST = 4, /* add an element at start of list (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST = 5, /* conditionally modify or add an element at end (Since: 10.4.0) */
+ VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST = 6, /* conditionally modify or add an element at start (Since: 10.4.0) */
# ifdef VIR_ENUM_SENTINELS
VIR_NETWORK_UPDATE_COMMAND_LAST /* (Since: 0.10.2) */
# endif
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
index cc92ed0b03..16fa26ab86 100644
--- a/src/conf/network_conf.c
+++ b/src/conf/network_conf.c
@@ -2720,6 +2720,7 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
virNetworkIPDef *ipdef = virNetworkIPDefByIndex(def, parentIndex);
virNetworkDHCPHostDef host = { 0 };
bool partialOkay = (command == VIR_NETWORK_UPDATE_COMMAND_DELETE);
+ int foundMatchedEntry = -1, foundExactEntry = -1;
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "host") < 0)
goto cleanup;
@@ -2740,22 +2741,47 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
goto cleanup;
}
- if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
+ /* check if the entry already exsits */
+ for (i = 0; i < ipdef->nhosts; i++) {
- /* search for the entry with this (ip|mac|name),
- * and update the IP+(mac|name) */
- for (i = 0; i < ipdef->nhosts; i++) {
- if ((host.mac && ipdef->hosts[i].mac &&
- !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) ||
- (VIR_SOCKET_ADDR_VALID(&host.ip) &&
- virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip)) ||
- (host.name &&
- STREQ_NULLABLE(host.name, ipdef->hosts[i].name))) {
- break;
- }
+ /* try to match any of (ip|mac|name) attributes */
+ if ((host.mac && ipdef->hosts[i].mac &&
+ !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) ||
+ (VIR_SOCKET_ADDR_VALID(&host.ip) &&
+ virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip)) ||
+ (host.name &&
+ STREQ_NULLABLE(host.name, ipdef->hosts[i].name))) {
+ foundMatchedEntry = i;
+ }
+
+ /* find exact entry - all specified attributes must match */
+ if ((!host.mac || !ipdef->hosts[i].mac ||
+ !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) &&
+ (!host.name ||
+ STREQ_NULLABLE(host.name, ipdef->hosts[i].name)) &&
+ (!VIR_SOCKET_ADDR_VALID(&host.ip) ||
+ virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip))) {
+ foundExactEntry = i;
+ break;
}
+ }
+
+ /* modify-or-add: convert command to add or modify based on foundEntry */
+ if (foundMatchedEntry == -1) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST;
+ else if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_LAST;
+ } else if (foundMatchedEntry >= 0) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_MODIFY;
+ }
+
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
- if (i == ipdef->nhosts) {
+ /* log error if no such entry exists to be modified */
+ if (foundMatchedEntry == -1) {
g_autofree char *ip = virSocketAddrFormat(&host.ip);
virReportError(VIR_ERR_OPERATION_INVALID,
_("couldn't locate an existing dhcp host entry with \"mac='%1$s'\" \"name='%2$s'\" \"ip='%3$s'\" in network '%4$s'"),
@@ -2768,8 +2794,8 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
* then clear out the extra copy to get rid of the duplicate pointers
* to its data (mac and name strings).
*/
- virNetworkDHCPHostDefClear(&ipdef->hosts[i]);
- ipdef->hosts[i] = host;
+ virNetworkDHCPHostDefClear(&ipdef->hosts[foundMatchedEntry]);
+ ipdef->hosts[foundMatchedEntry] = host;
memset(&host, 0, sizeof(host));
} else if ((command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST) ||
@@ -2779,21 +2805,14 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
goto cleanup;
/* log error if an entry with same name/address/ip already exists */
- for (i = 0; i < ipdef->nhosts; i++) {
- if ((host.mac && ipdef->hosts[i].mac &&
- !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) ||
- (host.name &&
- STREQ_NULLABLE(host.name, ipdef->hosts[i].name)) ||
- (VIR_SOCKET_ADDR_VALID(&host.ip) &&
- virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip))) {
- g_autofree char *ip = virSocketAddrFormat(&host.ip);
+ if (foundMatchedEntry >= 0) {
+ g_autofree char *ip = virSocketAddrFormat(&host.ip);
+ virReportError(VIR_ERR_OPERATION_INVALID,
+ _("there is an existing dhcp host entry in network '%1$s' that matches \"<host mac='%2$s' name='%3$s' ip='%4$s'/>\""),
+ def->name, host.mac ? host.mac : _("unknown"),
+ host.name, ip ? ip : _("unknown"));
+ goto cleanup;
- virReportError(VIR_ERR_OPERATION_INVALID,
- _("there is an existing dhcp host entry in network '%1$s' that matches \"<host mac='%2$s' name='%3$s' ip='%4$s'/>\""),
- def->name, host.mac ? host.mac : _("unknown"),
- host.name, ip ? ip : _("unknown"));
- goto cleanup;
- }
}
/* add to beginning/end of list */
@@ -2804,18 +2823,8 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
goto cleanup;
} else if (command == VIR_NETWORK_UPDATE_COMMAND_DELETE) {
- /* find matching entry - all specified attributes must match */
- for (i = 0; i < ipdef->nhosts; i++) {
- if ((!host.mac || !ipdef->hosts[i].mac ||
- !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) &&
- (!host.name ||
- STREQ_NULLABLE(host.name, ipdef->hosts[i].name)) &&
- (!VIR_SOCKET_ADDR_VALID(&host.ip) ||
- virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip))) {
- break;
- }
- }
- if (i == ipdef->nhosts) {
+ /* log error if there is no entry with exact match*/
+ if (foundExactEntry == -1) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("couldn't locate a matching dhcp host entry in network '%1$s'"),
def->name);
@@ -2823,8 +2832,8 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
}
/* remove it */
- virNetworkDHCPHostDefClear(&ipdef->hosts[i]);
- VIR_DELETE_ELEMENT(ipdef->hosts, i, ipdef->nhosts);
+ virNetworkDHCPHostDefClear(&ipdef->hosts[foundExactEntry]);
+ VIR_DELETE_ELEMENT(ipdef->hosts, foundExactEntry, ipdef->nhosts);
} else {
virNetworkDefUpdateUnknownCommand(command);
@@ -2865,6 +2874,14 @@ virNetworkDefUpdateIPDHCPRange(virNetworkDef *def,
return -1;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("dhcp ranges cannot be modified, use add command instead of modify-or-add"));
+ return -1;
+ }
+
if (virNetworkDHCPRangeDefParseXML(def->name, ipdef, ctxt->node, &range) < 0)
return -1;
@@ -2964,6 +2981,13 @@ virNetworkDefUpdateForwardInterface(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("forward interface entries cannot be modified, use add command instead of modify-or-add"));
+ goto cleanup;
+ }
+
/* parsing this is so simple that it doesn't have its own function */
iface.type = VIR_NETWORK_FORWARD_HOSTDEV_DEVICE_NETDEV;
if (!(iface.device.dev = virXMLPropString(ctxt->node, "dev"))) {
@@ -3085,6 +3109,18 @@ virNetworkDefUpdatePortGroup(virNetworkDef *def,
goto cleanup;
}
+ /* modify-or-add: convert command to add or modify based on foundName */
+ if (foundName == -1) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST;
+ else if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_LAST;
+ } else if (foundName >= 0) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_MODIFY;
+ }
+
/* if there is already a different default, we can't make this
* one the default.
*/
@@ -3153,6 +3189,13 @@ virNetworkDefUpdateDNSHost(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS HOST records cannot be modified, use add instead of modify-or-add"));
+ goto cleanup;
+ }
+
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "host") < 0)
goto cleanup;
@@ -3249,6 +3292,13 @@ virNetworkDefUpdateDNSSrv(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS SRV records cannot be modified, use add command instead of modify-or-add"));
+ goto cleanup;
+ }
+
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "srv") < 0)
goto cleanup;
@@ -3330,6 +3380,13 @@ virNetworkDefUpdateDNSTxt(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS TXT records cannot be modified, use add command instead of modify-or-add"));
+ goto cleanup;
+ }
+
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "txt") < 0)
goto cleanup;
diff --git a/tools/virsh-network.c b/tools/virsh-network.c
index 6fcc7fd8ee..88eb673482 100644
--- a/tools/virsh-network.c
+++ b/tools/virsh-network.c
@@ -1215,7 +1215,8 @@ static const vshCmdOptDef opts_network_update[] = {
.positional = true,
.required = true,
.completer = virshNetworkUpdateCommandCompleter,
- .help = N_("type of update (add-first, add-last (add), delete, or modify)")
+ .help = N_("type of update (add-first, add-last (add), delete, modify,"
+ "modify-or-add, or modify-or-add-first)")
},
{.name = "section",
.type = VSH_OT_STRING,
@@ -1245,7 +1246,8 @@ static const vshCmdOptDef opts_network_update[] = {
VIR_ENUM_IMPL(virshNetworkUpdateCommand,
VIR_NETWORK_UPDATE_COMMAND_LAST,
- "none", "modify", "delete", "add-last", "add-first");
+ "none", "modify", "delete", "add-last", "add-first", "modify-or-add",
+ "modify-or-add-first");
VIR_ENUM_IMPL(virshNetworkSection,
VIR_NETWORK_SECTION_LAST,
--
2.39.2
1
0
[PATCH 0/4] qemu: Fix saving of VMs and certain migration cases on root_squash NFS
by Peter Krempa 23 May '24
by Peter Krempa 23 May '24
23 May '24
See 3/4 for explanation.
Peter Krempa (4):
virfile: Modernize definition of
virFileOpenForked/virFileOpenForceOwnerMode/virFileOpenAs
virGetGroupList: Refactor and fix callers
virFileOpenForked: Fix handling of return value from virSocketSendFD()
NEWS: Mention migration/save bug on root_squash NFS
NEWS.rst | 7 +++++
src/lxc/lxc_container.c | 4 +--
src/security/security_dac.c | 7 +----
src/util/vircommand.c | 3 +-
src/util/virfile.c | 51 +++++++++++++++++----------------
src/util/virutil.c | 16 +++++------
tests/commandtest.c | 5 ++--
tools/virt-login-shell-helper.c | 3 +-
8 files changed, 49 insertions(+), 47 deletions(-)
--
2.45.1
2
8
When attempting to run:
libvirt.git/_build # ./run --selinux ./src/libvirtd
the following error is thrown:
Refusing to change selinux context of file './src/libvirtd' outside build directory
which is obviously wrong. The problem is 'being inside of build
directory' is detected by simple progpath.startswith(builddir).
While builddir is an absolute path, progpath isn't necessarily.
And while looking into the code, I've noticed chcon() function
accessing variable outside its scope when printing out the path
it's working on.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
run.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/run.in b/run.in
index 5b89b3dcd5..87cf39a920 100644
--- a/run.in
+++ b/run.in
@@ -138,7 +138,7 @@ def change_unit(name, action):
def chcon(path, user, role, type):
- print("Setting file context of {} to u={}, r={}, t={}...".format(progpath,
+ print("Setting file context of {} to u={}, r={}, t={}...".format(path,
user,
role,
type))
@@ -186,7 +186,7 @@ else:
try:
dorestorecon = False
- progpath = shutil.which(prog)
+ progpath = os.path.abspath(shutil.which(prog) or prog)
if len(try_stop_units):
print("Temporarily stopping systemd units...")
--
2.44.1
2
1
22 May '24
The virStateDriver struct has .stateInitialize callback which is
declared to return virDrvStateInitResult enum. But some drivers
return a plain int in their implementation which is UB.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/bhyve/bhyve_driver.c | 2 +-
src/ch/ch_driver.c | 11 ++++++-----
src/interface/interface_backend_netcf.c | 2 +-
src/interface/interface_backend_udev.c | 2 +-
src/libxl/libxl_driver.c | 2 +-
src/lxc/lxc_driver.c | 11 ++++++-----
src/network/bridge_driver.c | 2 +-
src/node_device/node_device_udev.c | 2 +-
src/nwfilter/nwfilter_driver.c | 2 +-
src/qemu/qemu_driver.c | 2 +-
src/remote/remote_driver.c | 2 +-
src/secret/secret_driver.c | 2 +-
src/storage/storage_driver.c | 2 +-
src/vz/vz_driver.c | 2 +-
14 files changed, 24 insertions(+), 22 deletions(-)
diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c
index 4203b13f94..2bd1e4c387 100644
--- a/src/bhyve/bhyve_driver.c
+++ b/src/bhyve/bhyve_driver.c
@@ -1176,7 +1176,7 @@ bhyveStateCleanup(void)
return 0;
}
-static int
+static virDrvStateInitResult
bhyveStateInitialize(bool privileged,
const char *root,
bool monolithic G_GNUC_UNUSED,
diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c
index 7308f40249..fbeac60825 100644
--- a/src/ch/ch_driver.c
+++ b/src/ch/ch_driver.c
@@ -1365,11 +1365,12 @@ static int chStateCleanup(void)
return 0;
}
-static int chStateInitialize(bool privileged,
- const char *root,
- bool monolithic G_GNUC_UNUSED,
- virStateInhibitCallback callback G_GNUC_UNUSED,
- void *opaque G_GNUC_UNUSED)
+static virDrvStateInitResult
+chStateInitialize(bool privileged,
+ const char *root,
+ bool monolithic G_GNUC_UNUSED,
+ virStateInhibitCallback callback G_GNUC_UNUSED,
+ void *opaque G_GNUC_UNUSED)
{
int ret = VIR_DRV_STATE_INIT_ERROR;
int rv;
diff --git a/src/interface/interface_backend_netcf.c b/src/interface/interface_backend_netcf.c
index d4a11157cc..16e1215663 100644
--- a/src/interface/interface_backend_netcf.c
+++ b/src/interface/interface_backend_netcf.c
@@ -86,7 +86,7 @@ virNetcfDriverStateDispose(void *obj)
}
-static int
+static virDrvStateInitResult
netcfStateInitialize(bool privileged,
const char *root,
bool monolithic G_GNUC_UNUSED,
diff --git a/src/interface/interface_backend_udev.c b/src/interface/interface_backend_udev.c
index 8bb19d7764..fdf11a8318 100644
--- a/src/interface/interface_backend_udev.c
+++ b/src/interface/interface_backend_udev.c
@@ -1091,7 +1091,7 @@ udevInterfaceIsActive(virInterfacePtr ifinfo)
static int
udevStateCleanup(void);
-static int
+static virDrvStateInitResult
udevStateInitialize(bool privileged,
const char *root,
bool monolithic G_GNUC_UNUSED,
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 4d5eb920bf..7dcae58413 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -645,7 +645,7 @@ libxlAddDom0(libxlDriverPrivate *driver)
return ret;
}
-static int
+static virDrvStateInitResult
libxlStateInitialize(bool privileged,
const char *root,
bool monolithic G_GNUC_UNUSED,
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index 1842ae8f0e..f76d09e8a9 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -1429,11 +1429,12 @@ lxcSecurityInit(virLXCDriverConfig *cfg)
}
-static int lxcStateInitialize(bool privileged,
- const char *root,
- bool monolithic G_GNUC_UNUSED,
- virStateInhibitCallback callback G_GNUC_UNUSED,
- void *opaque G_GNUC_UNUSED)
+static virDrvStateInitResult
+lxcStateInitialize(bool privileged,
+ const char *root,
+ bool monolithic G_GNUC_UNUSED,
+ virStateInhibitCallback callback G_GNUC_UNUSED,
+ void *opaque G_GNUC_UNUSED)
{
virLXCDriverConfig *cfg = NULL;
bool autostart = true;
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index e5f9ecf9e8..d7c1ef172d 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -576,7 +576,7 @@ firewalld_dbus_signal_callback(GDBusConnection *connection G_GNUC_UNUSED,
*
* Initialization function for the QEMU daemon
*/
-static int
+static virDrvStateInitResult
networkStateInitialize(bool privileged,
const char *root,
bool monolithic G_GNUC_UNUSED,
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
index f1e402f8f7..237cd7f645 100644
--- a/src/node_device/node_device_udev.c
+++ b/src/node_device/node_device_udev.c
@@ -2229,7 +2229,7 @@ mdevctlEventHandleCallback(GFileMonitor *monitor G_GNUC_UNUSED,
}
-static int
+static virDrvStateInitResult
nodeStateInitialize(bool privileged,
const char *root,
bool monolithic G_GNUC_UNUSED,
diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c
index 09719edd75..8ece91bf7c 100644
--- a/src/nwfilter/nwfilter_driver.c
+++ b/src/nwfilter/nwfilter_driver.c
@@ -208,7 +208,7 @@ nwfilterStateCleanup(void)
*
* Initialization function for the QEMU daemon
*/
-static int
+static virDrvStateInitResult
nwfilterStateInitialize(bool privileged,
const char *root,
bool monolithic G_GNUC_UNUSED,
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index d01f788aea..e2698c7924 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -546,7 +546,7 @@ qemuDomainFindMaxID(virDomainObj *vm,
*
* Initialization function for the QEMU daemon
*/
-static int
+static virDrvStateInitResult
qemuStateInitialize(bool privileged,
const char *root,
bool monolithic G_GNUC_UNUSED,
diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
index 7b73d97b7a..e76d9e9ba4 100644
--- a/src/remote/remote_driver.c
+++ b/src/remote/remote_driver.c
@@ -174,7 +174,7 @@ static void make_nonnull_domain_snapshot(remote_nonnull_domain_snapshot *snapsho
/* Helper functions for remoteOpen. */
-static int
+static virDrvStateInitResult
remoteStateInitialize(bool privileged G_GNUC_UNUSED,
const char *root G_GNUC_UNUSED,
bool monolithic,
diff --git a/src/secret/secret_driver.c b/src/secret/secret_driver.c
index c7bd65b4e9..a2d6b879d0 100644
--- a/src/secret/secret_driver.c
+++ b/src/secret/secret_driver.c
@@ -488,7 +488,7 @@ secretStateCleanup(void)
}
-static int
+static virDrvStateInitResult
secretStateInitialize(bool privileged,
const char *root,
bool monolithic G_GNUC_UNUSED,
diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
index 314fe930e0..86c03762d2 100644
--- a/src/storage/storage_driver.c
+++ b/src/storage/storage_driver.c
@@ -239,7 +239,7 @@ storageDriverAutostart(void)
*
* Initialization function for the Storage Driver
*/
-static int
+static virDrvStateInitResult
storageStateInitialize(bool privileged,
const char *root,
bool monolithic G_GNUC_UNUSED,
diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c
index 380fdcb57e..4edea4bf18 100644
--- a/src/vz/vz_driver.c
+++ b/src/vz/vz_driver.c
@@ -4068,7 +4068,7 @@ vzStateCleanup(void)
return 0;
}
-static int
+static virDrvStateInitResult
vzStateInitialize(bool privileged,
const char *root,
bool monolithic G_GNUC_UNUSED,
--
2.44.1
3
2
22 May '24
====================================================================
CALL FOR PAPERS
19th Workshop on Virtualization in High-Performance Cloud Computing
(VHPC '24) held in conjunction with the European Conference on
Parallel and Distributed Computing Aug 26-30, 2024, Madrid, Spain.
(Springer LNCS Proceedings)
====================================================================
Paper submission deadline: June 7th, 2024 AoE (extended)
Date: August 26, 27, 2024
Workshop URL: vhpc dot org
To submit an abstract or paper, please follow the link provided
in the Call for Papers (CfP) announcement at the end of this message.
Call for Papers
Containers and virtualization technologies constitute key enabling
factors for flexible resource management in modern data centers, and
particularly in cloud environments. Cloud providers need to manage
complex infrastructures in a seamless fashion to support the highly
dynamic and heterogeneous workloads and hosted applications customers
deploy. Similarly, HPC environments have been increasingly adopting
techniques that enable flexible management of vast computing and
networking resources, close to marginal provisioning cost, which is
unprecedented in the history of scientific and commercial computing.
Various virtualization-containerization technologies contribute to
the overall picture in different ways: machine virtualization, with
its capability to enable consolidation of multiple underutilized
servers with heterogeneous software and operating systems (OSes),
and its capability to live-migrate a fully operating virtual machine
(VM) with a very short downtime, enables novel and dynamic ways to
manage physical servers; OS-level virtualization (i.e.,
containerization), with its capability to isolate multiple user-space
environments and to allow for their co-existence within the same OS
kernel, promises to provide many of the advantages of machine
virtualization with high levels of responsiveness and performance;
lastly, unikernels provide for manyvirtualization benefits with a
minimized OS/library surface. I/O virtualization, in turn, allows
physical network interfaces to exchange traffic with multiple VMs
or containers; network virtualization, with its capability to create
logical network overlays independently from the underlying physical
topology, is another fundamental enabling technology for Cloud/HPC
infrastructures. Last, storage virtualization needs to evolve to
support increasingly demanding requirements in terms of performance
and reliability for the managed application data.
Publication
Accepted papers will be published in a Springer LNCS proceedings volume.
Topics of Interest
The VHPC program committee solicits original, high-quality
submissions related to virtualization across the entire software
stack with a special focus on the intersection of HPC, containers/
virtualization and cloud computing.
Each topic encompasses aspects related to design/architecture,
management, performance management, modeling and\
configuration/tooling:
Design / Architecture:
- Containers and OS-level virtualization (LXC, Docker/Podman,
Nitro/Firecracke, Singularity)
- Hypervisor support for heterogeneous resources (GPUs, NPUs,
co-processors, FPGAs, etc.)
- GPU hypervisor memory virtualization in support of high-memory LLM
training workloads
- Hypervisor extensions to mitigate side-channel attacks
([micro-]architectural timing attacks, privilege escalation)
- Use of Risc-V related technologies for cloud, virtualized and HPC
use-cases
- VM & Container trust and security models
- Multi-environment coupling, system software supporting in-situ
analysis with HPC simulation
- Cloud reliability, fault-tolerance and high-availability
- Cloud-based quantum compute services
- Energy-efficient and power-aware virtualization
- Containers inside VMs with hypervisor isolation
- Virtualization support for emerging memory and storage technologies
- Lightweight/specialized operating systems in conjunction with
virtual machines
- Unikernels and use cases for virtualized HPC environments
- Formal definition and verification of hypervisors and virtualization
system properties
- ARM-based hypervisors, ARM virtualization extensions
Management:
- Container and VM management for HPC and cloud environments
- Virtualized/Cloudified instances to support Lambda / Function-as-a-
Service (FaaS) Paradigms
- HPC services integration, services to support HPC
- Service and on-demand scheduling & resource management
- Dedicated workload management with VMs or containers
- Workflow coupling with VMs and containers
- Unikernels and lightweight VM application management
- Environments and tools for operating containerized environments
(batch, orchestration)
- Models for non-HPC workload provisioning on HPC resources
Performance Measurements and Modeling:
- Performance improvements for or driven by unikernels
- Optimizations of virtual machine monitor platforms and hypervisors
- Scalability analysis of VMs and/or containers at large scale
- Performance measurement, modeling and monitoring of virtualized/
cloud workloads
- Virtualization in supercomputing environments, HPC clusters,
HPC in the cloud with an emphasis on AI GPUs/TPUs/NPUs
- Energy-efficient deployment of high-performance, ultra-low
latency and real-time workloads in cloud infrastructures
- Modeling, control and isolation of end-to-end performance for
parallel & distributed cloud/HPC applications, including the use of
cloud functions / FaaS
Configuration / Tooling:
- Tool support for unikernels: configuration/build environments,
debuggers, profilers
- Job scheduling/control/policy and container placement in
virtualized environments
- Measuring and controlling "OS/Virtualization noise"
- Operating MPI in containers/VMs and Unikernels
- GPU virtualization operationalization
This year, we are calling the timely topic of virtualization in support
of high-memory LLM training workloads including, but not limited to:
- GPU hypervisor memory virtualization: Techniques for virtualizing GPU
memory to allow flexible and efficient allocation across multiple
workloads, enabling higher utilization of GPU resources
- Flat CPU/GPU memory page tables/TLB: Unified virtual memory spaces
and page table structures that allow both GPUs to address CPU memory
mapped to accelerator global memory space
- Storage/filesystem to virtual memory mapped approaches
- Distributed memory virtualization
- Memory compression and reduction techniques: approaches for
compressing model parameters, activations, and gradients to reduce
memory requirements during training
- Out-of-core training algorithms
- Efficient memory allocation and management: Techniques for optimizing
memory allocation, reducing fragmentation, and improving memory
utilization during training
- Memory-efficient data formats and processing: Data formats and
processing techniques that minimize memory overhead while maintaining
training efficiency
- Benchmarking and profiling tools: Tools and methodologies for
measuring, analyzing, and optimizing memory usage in
LLM training workloads
- Case studies and applications: Real-world examples and applications of
virtualization techniques in LLM training scenarios
The Workshop on Virtualization in High-Performance Cloud Computing
(VHPC) aims to bring together researchers and industrial practitioners
facing the challenges posed by virtualization in order to foster
discussion, collaboration, mutual exchange of knowledge and
experience, enabling research to ultimately provide novel solutions
for virtualized computing systems of tomorrow.
The workshop will be one day in length, composed of 20 min paper
presentations, each followed by 10 min discussion sections, plus
lightning talks that are limited to 5 minutes. Presentations may be
accompanied by interactive demonstrations.
Important Dates
Rolling abstract submission
Jun 7th, 2024 AoE (extended) - Paper submission deadline
Jun 20th, 2024 - Acceptance notification
Jul 1st, 2024 - Camera-ready due
Aug 26th-27th, 2024 - Workshop Day(s)
Chair
Michael Alexander (chair), Austrian Academy of Sciences
Anastassios Nanos (co-chair), Nubificus Ltd., UK
Tommaso Cucinotta (co-chair), Scuola Superiore Sant'Anna, Italy
Publicity chair
Remo Andreoli, Scuola Superiore Sant'Anna, Italy
Technical Program Committee
- Stergios Anastasiadis, University of Ioannina, Greece
- Gabriele Ara, Scuola Superiore Sant'Anna
- Jakob Blomer, CERN, Switzerland
- Eduardo César, Universidad Autonoma de Barcelona, Spain
- Taylor Childers, Argonne National Laboratory, USA
- François Diakhaté, CEA DAM, France
- Roberto Giorgi, University of Siena, Italy
- Kyle Hale, Northwestern University, USA
- Giuseppe Lettieri, University of Pisa, Italy
- Nikos Parlavantzas, IRISA, France
- Amer Qouneh, Western New England University, USA
- Carlos Reaño, Queen’s University Belfast, UK
- Riccardo Rocha, CERN, Switzerland
- Lutz Schubert, University of Ulm, Germany
- Jonathan Sparks, Cray, USA
- Kurt Tutschku, Blekinge Institute of Technology, Sweden
- John Walters, USC ISI, USA
- Yasuhiro Watashiba, Osaka University, Japan
- Chao-Tung Yang, Tunghai University, Taiwan
Paper Submission-Publication
Papers submitted to the workshop will be reviewed by at least two
members of the program committee and external reviewers. Submissions
should include abstract, keywords, the e-mail address of the
corresponding author, and must not exceed 12 pages, including tables
and figures at a main font size no smaller than 11 points.
Submission of a paper should be regarded as a commitment that, should
the paper be accepted, at least one of the authors will register and
attend the conference to present the work.
Accepted papers will be published in a Springer LNCS volume. Initial
submissions are in PDF; authors of accepted papers will be requested
to provide source files.
Lightning Talks
Lightning Talks are in a non-paper track, synoptical in nature and are
strictly limited to 5 minutes. They can be used to gain early feedback
on ongoing research, for demonstrations, to present research results,
early research ideas, perspectives and positions of interest to the
community. Submit abstracts via the main submission link.
General Information
The workshop will be held in conjunction with the International European
Conference on Parallel and Distributed Computing on Aug 26-30, 2024,
Madrid, Spain.
Please contact ahead of time for presenting remotely via video.
Abstract, Paper Submission Link:
https://edas.info/newPaper.php?c=31582
LNCS Format Guidelines:
https://www.springer.com/gp/computer-science/lncs/conference-proceedings-gu…
Follow VHPC Updates on X:
https://twitter.com/VHPCworkshop
1
0
21 May '24
Currently, monitor event names are looked up using binary search which has
O(log(n)) time complexity. This can be optimized even further with a
compile-time static hash table generated by the gperf tool. As gperf ensures
perfect hashing, lookup times are guaranteed to be O(1).
This patch also makes gperf a requirement for compiling libvirt if the QEMU
driver is enabled.
Signed-off-by: Rayhan Faizel <rayhan.faizel(a)gmail.com>
---
docs/kbase/internals/qemu-event-handlers.rst | 13 +-
meson.build | 2 +
src/qemu/meson.build | 9 +
src/qemu/qemu_monitor_event.gperf | 68 ++++++++
src/qemu/qemu_monitor_json.c | 171 +++++--------------
src/qemu/qemu_monitor_json.h | 45 +++++
6 files changed, 170 insertions(+), 138 deletions(-)
create mode 100644 src/qemu/qemu_monitor_event.gperf
diff --git a/docs/kbase/internals/qemu-event-handlers.rst b/docs/kbase/internals/qemu-event-handlers.rst
index 3589c4c48c..5ec11e28bd 100644
--- a/docs/kbase/internals/qemu-event-handlers.rst
+++ b/docs/kbase/internals/qemu-event-handlers.rst
@@ -23,16 +23,15 @@ QEMU monitor events
Any event emitted by qemu is received by
``qemu_monitor_json.c:qemuMonitorJSONIOProcessEvent()``. It looks up the
-event by name in the table ``eventHandlers`` (in the same file), which
-should have an entry like this for each event that libvirt
-understands::
+event by name from a hash-table, generated at compile-time by ``gperf``
+based on a list of entries defined in ``qemu_monitor_event.gperf``.
+``qemu_monitor_event.gperf`` should should have an entry like this
+for each event that libvirt understands::
- { "NIC_RX_FILTER_CHANGED", qemuMonitorJSONHandleNicRxFilterChanged, },
-
-NB: This table is searched with bsearch, so it *must* be alphabetically sorted.
+ "NIC_RX_FILTER_CHANGED", qemuMonitorJSONHandleNicRxFilterChanged
``qemuMonitorJSONIOProcessEvent`` calls the function listed in
-``eventHandlers``, e.g.::
+``qemu_monitor_event.gperf``, e.g.::
qemu_monitor_json.c:qemuMonitorJSONHandleNicRxFilterChanged()
diff --git a/meson.build b/meson.build
index e8b0094b91..03f1f0d56d 100644
--- a/meson.build
+++ b/meson.build
@@ -1708,6 +1708,8 @@ if not get_option('driver_qemu').disabled()
qemu_slirp_path = '/usr/bin/slirp-helper'
endif
conf.set_quoted('QEMU_SLIRP_HELPER', qemu_slirp_path)
+
+ gperf_prog = find_program('gperf')
endif
endif
diff --git a/src/qemu/meson.build b/src/qemu/meson.build
index 907893d431..2440476a7b 100644
--- a/src/qemu/meson.build
+++ b/src/qemu/meson.build
@@ -88,11 +88,20 @@ qemu_shim_sources = files(
'qemu_shim.c',
)
+qemu_driver_gperf_sources = []
+
+qemu_driver_gperf_sources += custom_target(
+ 'qemu_monitor_event.c',
+ input : 'qemu_monitor_event.gperf',
+ output : 'qemu_monitor_event.c',
+ command : [gperf_prog, '@INPUT@', '--output-file', '@OUTPUT@'])
+
if conf.has('WITH_QEMU')
qemu_driver_impl = static_library(
'virt_driver_qemu_impl',
[
qemu_driver_sources,
+ qemu_driver_gperf_sources,
qemu_dtrace_gen_headers,
],
dependencies: [
diff --git a/src/qemu/qemu_monitor_event.gperf b/src/qemu/qemu_monitor_event.gperf
new file mode 100644
index 0000000000..de2f958b9e
--- /dev/null
+++ b/src/qemu/qemu_monitor_event.gperf
@@ -0,0 +1,68 @@
+/*
+ * qemu_monitor_event.gperf: QEMU Monitor Event Lookup Table
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+%{
+#include "qemu_monitor_json.h"
+%}
+qemuEventHandler;
+%null_strings
+%define initializer-suffix ,NULL
+%language=ANSI-C
+%define slot-name type
+%define lookup-function-name qemu_monitor_event_lookup
+%define hash-function-name qemu_monitor_event_hash
+%readonly-tables
+%omit-struct-type
+%struct-type
+%%
+"ACPI_DEVICE_OST", qemuMonitorJSONHandleAcpiOstInfo
+"BALLOON_CHANGE", qemuMonitorJSONHandleBalloonChange
+"BLOCK_IO_ERROR", qemuMonitorJSONHandleIOError
+"BLOCK_WRITE_THRESHOLD", qemuMonitorJSONHandleBlockThreshold
+"DEVICE_DELETED", qemuMonitorJSONHandleDeviceDeleted
+"DEVICE_TRAY_MOVED", qemuMonitorJSONHandleTrayChange
+"DEVICE_UNPLUG_GUEST_ERROR", qemuMonitorJSONHandleDeviceUnplugErr
+"DUMP_COMPLETED", qemuMonitorJSONHandleDumpCompleted
+"GUEST_CRASHLOADED", qemuMonitorJSONHandleGuestCrashloaded
+"GUEST_PANICKED", qemuMonitorJSONHandleGuestPanic
+"JOB_STATUS_CHANGE", qemuMonitorJSONHandleJobStatusChange
+"MEMORY_DEVICE_SIZE_CHANGE", qemuMonitorJSONHandleMemoryDeviceSizeChange
+"MEMORY_FAILURE", qemuMonitorJSONHandleMemoryFailure
+"MIGRATION", qemuMonitorJSONHandleMigrationStatus
+"MIGRATION_PASS", qemuMonitorJSONHandleMigrationPass
+"NETDEV_STREAM_DISCONNECTED", qemuMonitorJSONHandleNetdevStreamDisconnected
+"NIC_RX_FILTER_CHANGED", qemuMonitorJSONHandleNicRxFilterChanged
+"PR_MANAGER_STATUS_CHANGED", qemuMonitorJSONHandlePRManagerStatusChanged
+"RDMA_GID_STATUS_CHANGED", qemuMonitorJSONHandleRdmaGidStatusChanged
+"RESET", qemuMonitorJSONHandleReset
+"RESUME", qemuMonitorJSONHandleResume
+"RTC_CHANGE", qemuMonitorJSONHandleRTCChange
+"SHUTDOWN", qemuMonitorJSONHandleShutdown
+"SPICE_CONNECTED", qemuMonitorJSONHandleSPICEConnect
+"SPICE_DISCONNECTED", qemuMonitorJSONHandleSPICEDisconnect
+"SPICE_INITIALIZED", qemuMonitorJSONHandleSPICEInitialize
+"SPICE_MIGRATE_COMPLETED", qemuMonitorJSONHandleSpiceMigrated
+"STOP", qemuMonitorJSONHandleStop
+"SUSPEND", qemuMonitorJSONHandlePMSuspend
+"SUSPEND_DISK", qemuMonitorJSONHandlePMSuspendDisk
+"VNC_CONNECTED", qemuMonitorJSONHandleVNCConnect
+"VNC_DISCONNECTED", qemuMonitorJSONHandleVNCDisconnect
+"VNC_INITIALIZED", qemuMonitorJSONHandleVNCInitialize
+"VSERPORT_CHANGE", qemuMonitorJSONHandleSerialChange
+"WAKEUP", qemuMonitorJSONHandlePMWakeup
+"WATCHDOG", qemuMonitorJSONHandleWatchdog
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index eb84a3d938..93df4490ad 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -49,102 +49,12 @@ VIR_LOG_INIT("qemu.qemu_monitor_json");
#define LINE_ENDING "\r\n"
-static void qemuMonitorJSONHandleShutdown(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleReset(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleStop(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleResume(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleRTCChange(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleWatchdog(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleIOError(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleVNCConnect(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleVNCInitialize(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleVNCDisconnect(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleSPICEConnect(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleSPICEInitialize(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleSPICEDisconnect(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleTrayChange(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandlePMWakeup(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandlePMSuspend(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleJobStatusChange(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleBalloonChange(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandlePMSuspendDisk(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleGuestCrashloaded(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleGuestPanic(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleDeviceDeleted(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleNicRxFilterChanged(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleSerialChange(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleSpiceMigrated(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleMigrationStatus(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleMigrationPass(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleAcpiOstInfo(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleBlockThreshold(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleDumpCompleted(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandlePRManagerStatusChanged(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleRdmaGidStatusChanged(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleMemoryFailure(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleMemoryDeviceSizeChange(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleDeviceUnplugErr(qemuMonitor *mon, virJSONValue *data);
-static void qemuMonitorJSONHandleNetdevStreamDisconnected(qemuMonitor *mon, virJSONValue *data);
-
-typedef struct {
- const char *type;
- void (*handler)(qemuMonitor *mon, virJSONValue *data);
-} qemuEventHandler;
-
-static qemuEventHandler eventHandlers[] = {
- { "ACPI_DEVICE_OST", qemuMonitorJSONHandleAcpiOstInfo, },
- { "BALLOON_CHANGE", qemuMonitorJSONHandleBalloonChange, },
- { "BLOCK_IO_ERROR", qemuMonitorJSONHandleIOError, },
- { "BLOCK_WRITE_THRESHOLD", qemuMonitorJSONHandleBlockThreshold, },
- { "DEVICE_DELETED", qemuMonitorJSONHandleDeviceDeleted, },
- { "DEVICE_TRAY_MOVED", qemuMonitorJSONHandleTrayChange, },
- { "DEVICE_UNPLUG_GUEST_ERROR", qemuMonitorJSONHandleDeviceUnplugErr, },
- { "DUMP_COMPLETED", qemuMonitorJSONHandleDumpCompleted, },
- { "GUEST_CRASHLOADED", qemuMonitorJSONHandleGuestCrashloaded, },
- { "GUEST_PANICKED", qemuMonitorJSONHandleGuestPanic, },
- { "JOB_STATUS_CHANGE", qemuMonitorJSONHandleJobStatusChange, },
- { "MEMORY_DEVICE_SIZE_CHANGE", qemuMonitorJSONHandleMemoryDeviceSizeChange, },
- { "MEMORY_FAILURE", qemuMonitorJSONHandleMemoryFailure, },
- { "MIGRATION", qemuMonitorJSONHandleMigrationStatus, },
- { "MIGRATION_PASS", qemuMonitorJSONHandleMigrationPass, },
- { "NETDEV_STREAM_DISCONNECTED", qemuMonitorJSONHandleNetdevStreamDisconnected, },
- { "NIC_RX_FILTER_CHANGED", qemuMonitorJSONHandleNicRxFilterChanged, },
- { "PR_MANAGER_STATUS_CHANGED", qemuMonitorJSONHandlePRManagerStatusChanged, },
- { "RDMA_GID_STATUS_CHANGED", qemuMonitorJSONHandleRdmaGidStatusChanged, },
- { "RESET", qemuMonitorJSONHandleReset, },
- { "RESUME", qemuMonitorJSONHandleResume, },
- { "RTC_CHANGE", qemuMonitorJSONHandleRTCChange, },
- { "SHUTDOWN", qemuMonitorJSONHandleShutdown, },
- { "SPICE_CONNECTED", qemuMonitorJSONHandleSPICEConnect, },
- { "SPICE_DISCONNECTED", qemuMonitorJSONHandleSPICEDisconnect, },
- { "SPICE_INITIALIZED", qemuMonitorJSONHandleSPICEInitialize, },
- { "SPICE_MIGRATE_COMPLETED", qemuMonitorJSONHandleSpiceMigrated, },
- { "STOP", qemuMonitorJSONHandleStop, },
- { "SUSPEND", qemuMonitorJSONHandlePMSuspend, },
- { "SUSPEND_DISK", qemuMonitorJSONHandlePMSuspendDisk, },
- { "VNC_CONNECTED", qemuMonitorJSONHandleVNCConnect, },
- { "VNC_DISCONNECTED", qemuMonitorJSONHandleVNCDisconnect, },
- { "VNC_INITIALIZED", qemuMonitorJSONHandleVNCInitialize, },
- { "VSERPORT_CHANGE", qemuMonitorJSONHandleSerialChange, },
- { "WAKEUP", qemuMonitorJSONHandlePMWakeup, },
- { "WATCHDOG", qemuMonitorJSONHandleWatchdog, },
- /* We use bsearch, so keep this list sorted. */
-};
-
-static int
-qemuMonitorEventCompare(const void *key, const void *elt)
-{
- const char *type = key;
- const qemuEventHandler *handler = elt;
- return strcmp(type, handler->type);
-}
-
static int
qemuMonitorJSONIOProcessEvent(qemuMonitor *mon,
virJSONValue *obj)
{
const char *type;
- qemuEventHandler *handler;
+ const qemuEventHandler *handler;
virJSONValue *data;
g_autofree char *details = NULL;
virJSONValue *timestamp;
@@ -171,8 +81,7 @@ qemuMonitorJSONIOProcessEvent(qemuMonitor *mon,
}
qemuMonitorEmitEvent(mon, type, seconds, micros, details);
- handler = bsearch(type, eventHandlers, G_N_ELEMENTS(eventHandlers),
- sizeof(eventHandlers[0]), qemuMonitorEventCompare);
+ handler = qemu_monitor_event_lookup(type, strlen(type));
if (handler) {
VIR_DEBUG("handle %s handler=%p data=%p", type,
handler->handler, data);
@@ -543,7 +452,7 @@ qemuMonitorJSONMakeCommand(const char *cmdname,
}
-static void qemuMonitorJSONHandleShutdown(qemuMonitor *mon, virJSONValue *data)
+void qemuMonitorJSONHandleShutdown(qemuMonitor *mon, virJSONValue *data)
{
bool guest = false;
virTristateBool guest_initiated = VIR_TRISTATE_BOOL_ABSENT;
@@ -554,17 +463,17 @@ static void qemuMonitorJSONHandleShutdown(qemuMonitor *mon, virJSONValue *data)
qemuMonitorEmitShutdown(mon, guest_initiated);
}
-static void qemuMonitorJSONHandleReset(qemuMonitor *mon, virJSONValue *data G_GNUC_UNUSED)
+void qemuMonitorJSONHandleReset(qemuMonitor *mon, virJSONValue *data G_GNUC_UNUSED)
{
qemuMonitorEmitReset(mon);
}
-static void qemuMonitorJSONHandleStop(qemuMonitor *mon, virJSONValue *data G_GNUC_UNUSED)
+void qemuMonitorJSONHandleStop(qemuMonitor *mon, virJSONValue *data G_GNUC_UNUSED)
{
qemuMonitorEmitStop(mon);
}
-static void qemuMonitorJSONHandleResume(qemuMonitor *mon, virJSONValue *data G_GNUC_UNUSED)
+void qemuMonitorJSONHandleResume(qemuMonitor *mon, virJSONValue *data G_GNUC_UNUSED)
{
qemuMonitorEmitResume(mon);
}
@@ -635,7 +544,7 @@ qemuMonitorJSONGuestPanicExtractInfo(virJSONValue *data)
}
-static void
+void
qemuMonitorJSONHandleGuestPanic(qemuMonitor *mon,
virJSONValue *data)
{
@@ -649,7 +558,7 @@ qemuMonitorJSONHandleGuestPanic(qemuMonitor *mon,
}
-static void qemuMonitorJSONHandleRTCChange(qemuMonitor *mon, virJSONValue *data)
+void qemuMonitorJSONHandleRTCChange(qemuMonitor *mon, virJSONValue *data)
{
long long offset = 0;
if (virJSONValueObjectGetNumberLong(data, "offset", &offset) < 0) {
@@ -665,7 +574,7 @@ VIR_ENUM_IMPL(qemuMonitorWatchdogAction,
"none", "pause", "reset", "poweroff", "shutdown", "debug", "inject-nmi",
);
-static void qemuMonitorJSONHandleWatchdog(qemuMonitor *mon, virJSONValue *data)
+void qemuMonitorJSONHandleWatchdog(qemuMonitor *mon, virJSONValue *data)
{
const char *action;
int actionID;
@@ -689,7 +598,7 @@ VIR_ENUM_IMPL(qemuMonitorIOErrorAction,
);
-static void
+void
qemuMonitorJSONHandleIOError(qemuMonitor *mon, virJSONValue *data)
{
const char *device;
@@ -802,19 +711,19 @@ qemuMonitorJSONHandleGraphicsVNC(qemuMonitor *mon,
authScheme, x509dname, saslUsername);
}
-static void qemuMonitorJSONHandleVNCConnect(qemuMonitor *mon, virJSONValue *data)
+void qemuMonitorJSONHandleVNCConnect(qemuMonitor *mon, virJSONValue *data)
{
qemuMonitorJSONHandleGraphicsVNC(mon, data, VIR_DOMAIN_EVENT_GRAPHICS_CONNECT);
}
-static void qemuMonitorJSONHandleVNCInitialize(qemuMonitor *mon, virJSONValue *data)
+void qemuMonitorJSONHandleVNCInitialize(qemuMonitor *mon, virJSONValue *data)
{
qemuMonitorJSONHandleGraphicsVNC(mon, data, VIR_DOMAIN_EVENT_GRAPHICS_INITIALIZE);
}
-static void qemuMonitorJSONHandleVNCDisconnect(qemuMonitor *mon, virJSONValue *data)
+void qemuMonitorJSONHandleVNCDisconnect(qemuMonitor *mon, virJSONValue *data)
{
qemuMonitorJSONHandleGraphicsVNC(mon, data, VIR_DOMAIN_EVENT_GRAPHICS_DISCONNECT);
}
@@ -884,24 +793,24 @@ qemuMonitorJSONHandleGraphicsSPICE(qemuMonitor *mon,
}
-static void qemuMonitorJSONHandleSPICEConnect(qemuMonitor *mon, virJSONValue *data)
+void qemuMonitorJSONHandleSPICEConnect(qemuMonitor *mon, virJSONValue *data)
{
qemuMonitorJSONHandleGraphicsSPICE(mon, data, VIR_DOMAIN_EVENT_GRAPHICS_CONNECT);
}
-static void qemuMonitorJSONHandleSPICEInitialize(qemuMonitor *mon, virJSONValue *data)
+void qemuMonitorJSONHandleSPICEInitialize(qemuMonitor *mon, virJSONValue *data)
{
qemuMonitorJSONHandleGraphicsSPICE(mon, data, VIR_DOMAIN_EVENT_GRAPHICS_INITIALIZE);
}
-static void qemuMonitorJSONHandleSPICEDisconnect(qemuMonitor *mon, virJSONValue *data)
+void qemuMonitorJSONHandleSPICEDisconnect(qemuMonitor *mon, virJSONValue *data)
{
qemuMonitorJSONHandleGraphicsSPICE(mon, data, VIR_DOMAIN_EVENT_GRAPHICS_DISCONNECT);
}
-static void
+void
qemuMonitorJSONHandleJobStatusChange(qemuMonitor *mon,
virJSONValue *data)
{
@@ -924,7 +833,7 @@ qemuMonitorJSONHandleJobStatusChange(qemuMonitor *mon,
}
-static void
+void
qemuMonitorJSONHandleTrayChange(qemuMonitor *mon,
virJSONValue *data)
{
@@ -955,14 +864,14 @@ qemuMonitorJSONHandleTrayChange(qemuMonitor *mon,
qemuMonitorEmitTrayChange(mon, devAlias, devid, reason);
}
-static void
+void
qemuMonitorJSONHandlePMWakeup(qemuMonitor *mon,
virJSONValue *data G_GNUC_UNUSED)
{
qemuMonitorEmitPMWakeup(mon);
}
-static void
+void
qemuMonitorJSONHandlePMSuspend(qemuMonitor *mon,
virJSONValue *data G_GNUC_UNUSED)
{
@@ -970,7 +879,7 @@ qemuMonitorJSONHandlePMSuspend(qemuMonitor *mon,
}
-static void
+void
qemuMonitorJSONHandleBalloonChange(qemuMonitor *mon,
virJSONValue *data)
{
@@ -983,14 +892,14 @@ qemuMonitorJSONHandleBalloonChange(qemuMonitor *mon,
qemuMonitorEmitBalloonChange(mon, actual);
}
-static void
+void
qemuMonitorJSONHandlePMSuspendDisk(qemuMonitor *mon,
virJSONValue *data G_GNUC_UNUSED)
{
qemuMonitorEmitPMSuspendDisk(mon);
}
-static void
+void
qemuMonitorJSONHandleDeviceDeleted(qemuMonitor *mon, virJSONValue *data)
{
const char *device;
@@ -1004,7 +913,7 @@ qemuMonitorJSONHandleDeviceDeleted(qemuMonitor *mon, virJSONValue *data)
}
-static void
+void
qemuMonitorJSONHandleDeviceUnplugErr(qemuMonitor *mon, virJSONValue *data)
{
const char *device;
@@ -1021,7 +930,7 @@ qemuMonitorJSONHandleDeviceUnplugErr(qemuMonitor *mon, virJSONValue *data)
}
-static void
+void
qemuMonitorJSONHandleNetdevStreamDisconnected(qemuMonitor *mon, virJSONValue *data)
{
const char *name;
@@ -1035,7 +944,7 @@ qemuMonitorJSONHandleNetdevStreamDisconnected(qemuMonitor *mon, virJSONValue *da
}
-static void
+void
qemuMonitorJSONHandleNicRxFilterChanged(qemuMonitor *mon, virJSONValue *data)
{
const char *name;
@@ -1049,7 +958,7 @@ qemuMonitorJSONHandleNicRxFilterChanged(qemuMonitor *mon, virJSONValue *data)
}
-static void
+void
qemuMonitorJSONHandleSerialChange(qemuMonitor *mon,
virJSONValue *data)
{
@@ -1070,7 +979,7 @@ qemuMonitorJSONHandleSerialChange(qemuMonitor *mon,
}
-static void
+void
qemuMonitorJSONHandleSpiceMigrated(qemuMonitor *mon,
virJSONValue *data G_GNUC_UNUSED)
{
@@ -1078,7 +987,7 @@ qemuMonitorJSONHandleSpiceMigrated(qemuMonitor *mon,
}
-static void
+void
qemuMonitorJSONHandleMemoryDeviceSizeChange(qemuMonitor *mon,
virJSONValue *data)
{
@@ -1100,7 +1009,7 @@ qemuMonitorJSONHandleMemoryDeviceSizeChange(qemuMonitor *mon,
}
-static void
+void
qemuMonitorJSONHandleMemoryFailure(qemuMonitor *mon,
virJSONValue *data)
{
@@ -1147,7 +1056,7 @@ qemuMonitorJSONHandleMemoryFailure(qemuMonitor *mon,
}
-static void
+void
qemuMonitorJSONHandleMigrationStatus(qemuMonitor *mon,
virJSONValue *data)
{
@@ -1168,7 +1077,7 @@ qemuMonitorJSONHandleMigrationStatus(qemuMonitor *mon,
}
-static void
+void
qemuMonitorJSONHandleMigrationPass(qemuMonitor *mon,
virJSONValue *data)
{
@@ -1183,7 +1092,7 @@ qemuMonitorJSONHandleMigrationPass(qemuMonitor *mon,
}
-static void
+void
qemuMonitorJSONHandleAcpiOstInfo(qemuMonitor *mon, virJSONValue *data)
{
virJSONValue *info;
@@ -1220,7 +1129,7 @@ qemuMonitorJSONHandleAcpiOstInfo(qemuMonitor *mon, virJSONValue *data)
}
-static void
+void
qemuMonitorJSONHandleBlockThreshold(qemuMonitor *mon, virJSONValue *data)
{
const char *nodename;
@@ -1280,7 +1189,7 @@ qemuMonitorJSONExtractDumpStats(virJSONValue *result,
}
-static void
+void
qemuMonitorJSONHandleDumpCompleted(qemuMonitor *mon,
virJSONValue *data)
{
@@ -1302,8 +1211,8 @@ qemuMonitorJSONHandleDumpCompleted(qemuMonitor *mon,
}
-static void qemuMonitorJSONHandlePRManagerStatusChanged(qemuMonitor *mon,
- virJSONValue *data)
+void qemuMonitorJSONHandlePRManagerStatusChanged(qemuMonitor *mon,
+ virJSONValue *data)
{
const char *name;
bool connected;
@@ -1323,8 +1232,8 @@ static void qemuMonitorJSONHandlePRManagerStatusChanged(qemuMonitor *mon,
}
-static void qemuMonitorJSONHandleRdmaGidStatusChanged(qemuMonitor *mon,
- virJSONValue *data)
+void qemuMonitorJSONHandleRdmaGidStatusChanged(qemuMonitor *mon,
+ virJSONValue *data)
{
const char *netdev;
bool gid_status;
@@ -1357,7 +1266,7 @@ static void qemuMonitorJSONHandleRdmaGidStatusChanged(qemuMonitor *mon,
}
-static void
+void
qemuMonitorJSONHandleGuestCrashloaded(qemuMonitor *mon,
virJSONValue *data)
{
diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h
index 9684660d86..5bd4b21b7d 100644
--- a/src/qemu/qemu_monitor_json.h
+++ b/src/qemu/qemu_monitor_json.h
@@ -27,6 +27,51 @@
#include "cpu/cpu.h"
#include "util/virgic.h"
+typedef struct {
+ const char *type;
+ void (*handler)(qemuMonitor *mon, virJSONValue *data);
+} qemuEventHandler;
+
+const qemuEventHandler *
+qemu_monitor_event_lookup(const char *str, size_t len);
+
+void qemuMonitorJSONHandleShutdown(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleReset(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleStop(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleResume(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleRTCChange(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleWatchdog(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleIOError(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleVNCConnect(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleVNCInitialize(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleVNCDisconnect(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleSPICEConnect(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleSPICEInitialize(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleSPICEDisconnect(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleTrayChange(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandlePMWakeup(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandlePMSuspend(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleJobStatusChange(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleBalloonChange(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandlePMSuspendDisk(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleGuestCrashloaded(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleGuestPanic(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleDeviceDeleted(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleNicRxFilterChanged(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleSerialChange(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleSpiceMigrated(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleMigrationStatus(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleMigrationPass(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleAcpiOstInfo(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleBlockThreshold(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleDumpCompleted(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandlePRManagerStatusChanged(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleRdmaGidStatusChanged(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleMemoryFailure(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleMemoryDeviceSizeChange(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleDeviceUnplugErr(qemuMonitor *mon, virJSONValue *data);
+void qemuMonitorJSONHandleNetdevStreamDisconnected(qemuMonitor *mon, virJSONValue *data);
+
int
qemuMonitorJSONIOProcessLine(qemuMonitor *mon,
const char *line,
--
2.34.1
2
1
The current way of updating a network configuration uses `virsh
net-update` to add, delete or modify entries. But with such a mechansim
one should know if an entry with current info already exists. Adding
modify-or-add option automatically performs either modify or add
depending on the current state.
Resolves: https://gitlab.com/libvirt/libvirt/-/issues/363
Signed-off-by: Abhiram Tilak <atp.exp(a)gmail.com>
---
Changes in v2:
- Removed the modify-or-add functionality for sections
where modify is not applicable.
- Changed the existing implementation of `UpdateIPDHCPHost`,
to avoid code duplication.
- Changed the implementation of modify-or-delete to reassign
the `command` variable instead of using multiple nested conditions.
docs/manpages/virsh.rst | 5 +-
include/libvirt/libvirt-network.h | 12 +--
src/conf/network_conf.c | 134 +++++++++++++++++++++---------
tools/virsh-network.c | 6 +-
4 files changed, 110 insertions(+), 47 deletions(-)
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index 115b802c45..0da3827f6b 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -5908,7 +5908,10 @@ changes optionally taking effect immediately, without needing to
destroy and re-start the network.
*command* is one of "add-first", "add-last", "add" (a synonym for
-add-last), "delete", or "modify".
+add-last), "delete", "modify", "modify-or-add" (modify + add-last), or
+"modify-or-add-first". The 'modify-or-add*' commands perform modify or
+add operation depending on the given state, and can be useful for
+scripting.
*section* is one of "bridge", "domain", "ip", "ip-dhcp-host",
"ip-dhcp-range", "forward", "forward-interface", "forward-pf",
diff --git a/include/libvirt/libvirt-network.h b/include/libvirt/libvirt-network.h
index 58591be7ac..bb4468b160 100644
--- a/include/libvirt/libvirt-network.h
+++ b/include/libvirt/libvirt-network.h
@@ -176,11 +176,13 @@ int virNetworkUndefine (virNetworkPtr network);
* Since: 0.10.2
*/
typedef enum {
- VIR_NETWORK_UPDATE_COMMAND_NONE = 0, /* invalid (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_MODIFY = 1, /* modify an existing element (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_DELETE = 2, /* delete an existing element (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_ADD_LAST = 3, /* add an element at end of list (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST = 4, /* add an element at start of list (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_NONE = 0, /* invalid (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_MODIFY = 1, /* modify an existing element (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_DELETE = 2, /* delete an existing element (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_ADD_LAST = 3, /* add an element at end of list (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST = 4, /* add an element at start of list (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST = 5, /* conditionally modify or add an element at end (Since: 10.4.0) */
+ VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST = 6, /* conditionally modify or add an element at start (Since: 10.4.0) */
# ifdef VIR_ENUM_SENTINELS
VIR_NETWORK_UPDATE_COMMAND_LAST /* (Since: 0.10.2) */
# endif
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
index cc92ed0b03..a7c3dea163 100644
--- a/src/conf/network_conf.c
+++ b/src/conf/network_conf.c
@@ -2720,6 +2720,7 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
virNetworkIPDef *ipdef = virNetworkIPDefByIndex(def, parentIndex);
virNetworkDHCPHostDef host = { 0 };
bool partialOkay = (command == VIR_NETWORK_UPDATE_COMMAND_DELETE);
+ int foundMatchedEntry = -1, foundExactEntry = -1;
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "host") < 0)
goto cleanup;
@@ -2740,22 +2741,47 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
goto cleanup;
}
- if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
+ /* check if the entry already exsits */
+ for (i = 0; i < ipdef->nhosts; i++) {
- /* search for the entry with this (ip|mac|name),
- * and update the IP+(mac|name) */
- for (i = 0; i < ipdef->nhosts; i++) {
- if ((host.mac && ipdef->hosts[i].mac &&
- !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) ||
- (VIR_SOCKET_ADDR_VALID(&host.ip) &&
- virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip)) ||
- (host.name &&
- STREQ_NULLABLE(host.name, ipdef->hosts[i].name))) {
- break;
- }
+ /* try to match any of (ip|mac|name) attributes */
+ if ((host.mac && ipdef->hosts[i].mac &&
+ !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) ||
+ (VIR_SOCKET_ADDR_VALID(&host.ip) &&
+ virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip)) ||
+ (host.name &&
+ STREQ_NULLABLE(host.name, ipdef->hosts[i].name))) {
+ foundMatchedEntry = i;
+ }
+
+ /* find exact entry - all specified attributes must match */
+ if ((!host.mac || !ipdef->hosts[i].mac ||
+ !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) &&
+ (!host.name ||
+ STREQ_NULLABLE(host.name, ipdef->hosts[i].name)) &&
+ (!VIR_SOCKET_ADDR_VALID(&host.ip) ||
+ virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip))) {
+ foundExactEntry = i;
+ break;
}
+ }
+
+ /* modify-or-add: convert command to add or modify based on foundEntry */
+ if (foundEntry == -1) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST;
+ else if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_LAST;
+ } else if (foundEntry >= 0) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_MODIFY;
+ }
+
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
- if (i == ipdef->nhosts) {
+ /* log error if no such entry exists to be modified */
+ if (foundMatchedEntry == -1) {
g_autofree char *ip = virSocketAddrFormat(&host.ip);
virReportError(VIR_ERR_OPERATION_INVALID,
_("couldn't locate an existing dhcp host entry with \"mac='%1$s'\" \"name='%2$s'\" \"ip='%3$s'\" in network '%4$s'"),
@@ -2779,21 +2805,13 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
goto cleanup;
/* log error if an entry with same name/address/ip already exists */
- for (i = 0; i < ipdef->nhosts; i++) {
- if ((host.mac && ipdef->hosts[i].mac &&
- !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) ||
- (host.name &&
- STREQ_NULLABLE(host.name, ipdef->hosts[i].name)) ||
- (VIR_SOCKET_ADDR_VALID(&host.ip) &&
- virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip))) {
- g_autofree char *ip = virSocketAddrFormat(&host.ip);
+ if (foundMatchedEntry >= 0) {
+ virReportError(VIR_ERR_OPERATION_INVALID,
+ _("there is an existing dhcp host entry in network '%1$s' that matches \"<host mac='%2$s' name='%3$s' ip='%4$s'/>\""),
+ def->name, host.mac ? host.mac : _("unknown"),
+ host.name, ip ? ip : _("unknown"));
+ goto cleanup;
- virReportError(VIR_ERR_OPERATION_INVALID,
- _("there is an existing dhcp host entry in network '%1$s' that matches \"<host mac='%2$s' name='%3$s' ip='%4$s'/>\""),
- def->name, host.mac ? host.mac : _("unknown"),
- host.name, ip ? ip : _("unknown"));
- goto cleanup;
- }
}
/* add to beginning/end of list */
@@ -2804,18 +2822,8 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
goto cleanup;
} else if (command == VIR_NETWORK_UPDATE_COMMAND_DELETE) {
- /* find matching entry - all specified attributes must match */
- for (i = 0; i < ipdef->nhosts; i++) {
- if ((!host.mac || !ipdef->hosts[i].mac ||
- !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) &&
- (!host.name ||
- STREQ_NULLABLE(host.name, ipdef->hosts[i].name)) &&
- (!VIR_SOCKET_ADDR_VALID(&host.ip) ||
- virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip))) {
- break;
- }
- }
- if (i == ipdef->nhosts) {
+ /* log error if there is no entry with exact match*/
+ if (foundExactEntry == -1) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("couldn't locate a matching dhcp host entry in network '%1$s'"),
def->name);
@@ -2865,6 +2873,14 @@ virNetworkDefUpdateIPDHCPRange(virNetworkDef *def,
return -1;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("dhcp ranges cannot be modified, use add command instead of modify-or-add"));
+ return -1;
+ }
+
if (virNetworkDHCPRangeDefParseXML(def->name, ipdef, ctxt->node, &range) < 0)
return -1;
@@ -2964,6 +2980,13 @@ virNetworkDefUpdateForwardInterface(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("forward interface entries cannot be modified, use add command instead of modify-or-add"));
+ goto cleanup;
+ }
+
/* parsing this is so simple that it doesn't have its own function */
iface.type = VIR_NETWORK_FORWARD_HOSTDEV_DEVICE_NETDEV;
if (!(iface.device.dev = virXMLPropString(ctxt->node, "dev"))) {
@@ -3085,6 +3108,18 @@ virNetworkDefUpdatePortGroup(virNetworkDef *def,
goto cleanup;
}
+ /* modify-or-add: convert command to add or modify based on foundName */
+ if (foundName == -1) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST;
+ else if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_LAST;
+ } else if (foundName >= 0) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_MODIFY;
+ }
+
/* if there is already a different default, we can't make this
* one the default.
*/
@@ -3153,6 +3188,13 @@ virNetworkDefUpdateDNSHost(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS HOST records cannot be modified, use add instead of modify-or-add"));
+ goto cleanup;
+ }
+
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "host") < 0)
goto cleanup;
@@ -3249,6 +3291,13 @@ virNetworkDefUpdateDNSSrv(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS SRV records cannot be modified, use add command instead of modify-or-add"));
+ goto cleanup;
+ }
+
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "srv") < 0)
goto cleanup;
@@ -3330,6 +3379,13 @@ virNetworkDefUpdateDNSTxt(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS TXT records cannot be modified, use add command instead of modify-or-add"));
+ goto cleanup;
+ }
+
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "txt") < 0)
goto cleanup;
diff --git a/tools/virsh-network.c b/tools/virsh-network.c
index 597e3d4530..d7dc5df5a8 100644
--- a/tools/virsh-network.c
+++ b/tools/virsh-network.c
@@ -1231,7 +1231,8 @@ static const vshCmdOptDef opts_network_update[] = {
.positional = true,
.required = true,
.completer = virshNetworkUpdateCommandCompleter,
- .help = N_("type of update (add-first, add-last (add), delete, or modify)")
+ .help = N_("type of update (add-first, add-last (add), delete, modify,"
+ "modify-or-add, or modify-or-add-first)")
},
{.name = "section",
.type = VSH_OT_STRING,
@@ -1260,7 +1261,8 @@ static const vshCmdOptDef opts_network_update[] = {
VIR_ENUM_IMPL(virshNetworkUpdateCommand,
VIR_NETWORK_UPDATE_COMMAND_LAST,
- "none", "modify", "delete", "add-last", "add-first");
+ "none", "modify", "delete", "add-last", "add-first", "modify-or-add",
+ "modify-or-add-first");
VIR_ENUM_IMPL(virshNetworkSection,
VIR_NETWORK_SECTION_LAST,
--
2.42.1
2
2
The current way of updating a network configuration uses `virsh
net-update` to add, delete or modify entries. But with such a mechansim
one should know if an entry with current info already exists. Adding
modify-or-add option automatically performs either modify or add
depending on the current state.
Resolves: https://gitlab.com/libvirt/libvirt/-/issues/363
Signed-off-by: Abhiram Tilak <atp.exp(a)gmail.com>
---
Changes in v3:
- Changed the indexes used to delete or modify instead of `i`.
Changes in v2:
- Removed the modify-or-add functionality for sections
where modify is not applicable.
- Changed the existing implementation of `UpdateIPDHCPHost`,
to avoid code duplication.
- Changed the implementation of modify-or-delete to reassign
the `command` variable instead of using multiple nested conditions.
docs/manpages/virsh.rst | 5 +-
include/libvirt/libvirt-network.h | 12 +--
src/conf/network_conf.c | 142 +++++++++++++++++++++---------
tools/virsh-network.c | 6 +-
4 files changed, 114 insertions(+), 51 deletions(-)
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index fa038e4547..918e6db30c 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -5906,7 +5906,10 @@ changes optionally taking effect immediately, without needing to
destroy and re-start the network.
*command* is one of "add-first", "add-last", "add" (a synonym for
-add-last), "delete", or "modify".
+add-last), "delete", "modify", "modify-or-add" (modify + add-last), or
+"modify-or-add-first". The 'modify-or-add*' commands perform modify or
+add operation depending on the given state, and can be useful for
+scripting.
*section* is one of "bridge", "domain", "ip", "ip-dhcp-host",
"ip-dhcp-range", "forward", "forward-interface", "forward-pf",
diff --git a/include/libvirt/libvirt-network.h b/include/libvirt/libvirt-network.h
index 58591be7ac..bb4468b160 100644
--- a/include/libvirt/libvirt-network.h
+++ b/include/libvirt/libvirt-network.h
@@ -176,11 +176,13 @@ int virNetworkUndefine (virNetworkPtr network);
* Since: 0.10.2
*/
typedef enum {
- VIR_NETWORK_UPDATE_COMMAND_NONE = 0, /* invalid (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_MODIFY = 1, /* modify an existing element (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_DELETE = 2, /* delete an existing element (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_ADD_LAST = 3, /* add an element at end of list (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST = 4, /* add an element at start of list (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_NONE = 0, /* invalid (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_MODIFY = 1, /* modify an existing element (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_DELETE = 2, /* delete an existing element (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_ADD_LAST = 3, /* add an element at end of list (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST = 4, /* add an element at start of list (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST = 5, /* conditionally modify or add an element at end (Since: 10.4.0) */
+ VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST = 6, /* conditionally modify or add an element at start (Since: 10.4.0) */
# ifdef VIR_ENUM_SENTINELS
VIR_NETWORK_UPDATE_COMMAND_LAST /* (Since: 0.10.2) */
# endif
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
index cc92ed0b03..4f76257d06 100644
--- a/src/conf/network_conf.c
+++ b/src/conf/network_conf.c
@@ -2720,6 +2720,7 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
virNetworkIPDef *ipdef = virNetworkIPDefByIndex(def, parentIndex);
virNetworkDHCPHostDef host = { 0 };
bool partialOkay = (command == VIR_NETWORK_UPDATE_COMMAND_DELETE);
+ int foundMatchedEntry = -1, foundExactEntry = -1;
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "host") < 0)
goto cleanup;
@@ -2740,22 +2741,47 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
goto cleanup;
}
- if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
+ /* check if the entry already exsits */
+ for (i = 0; i < ipdef->nhosts; i++) {
- /* search for the entry with this (ip|mac|name),
- * and update the IP+(mac|name) */
- for (i = 0; i < ipdef->nhosts; i++) {
- if ((host.mac && ipdef->hosts[i].mac &&
- !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) ||
- (VIR_SOCKET_ADDR_VALID(&host.ip) &&
- virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip)) ||
- (host.name &&
- STREQ_NULLABLE(host.name, ipdef->hosts[i].name))) {
- break;
- }
+ /* try to match any of (ip|mac|name) attributes */
+ if ((host.mac && ipdef->hosts[i].mac &&
+ !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) ||
+ (VIR_SOCKET_ADDR_VALID(&host.ip) &&
+ virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip)) ||
+ (host.name &&
+ STREQ_NULLABLE(host.name, ipdef->hosts[i].name))) {
+ foundMatchedEntry = i;
+ }
+
+ /* find exact entry - all attributes must match if they exist */
+ if ((!host.mac || !ipdef->hosts[i].mac ||
+ !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) &&
+ (!host.name ||
+ STREQ_NULLABLE(host.name, ipdef->hosts[i].name)) &&
+ (!VIR_SOCKET_ADDR_VALID(&host.ip) ||
+ virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip))) {
+ foundExactEntry = i;
+ break;
}
+ }
+
+ /* modify-or-add: convert command to add or modify based on foundEntry */
+ if (foundEntry == -1) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST;
+ else if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_LAST;
+ } else if (foundEntry >= 0) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_MODIFY;
+ }
+
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
- if (i == ipdef->nhosts) {
+ /* log error if no such entry exists to be modified */
+ if (foundMatchedEntry == -1) {
g_autofree char *ip = virSocketAddrFormat(&host.ip);
virReportError(VIR_ERR_OPERATION_INVALID,
_("couldn't locate an existing dhcp host entry with \"mac='%1$s'\" \"name='%2$s'\" \"ip='%3$s'\" in network '%4$s'"),
@@ -2768,8 +2794,8 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
* then clear out the extra copy to get rid of the duplicate pointers
* to its data (mac and name strings).
*/
- virNetworkDHCPHostDefClear(&ipdef->hosts[i]);
- ipdef->hosts[i] = host;
+ virNetworkDHCPHostDefClear(&ipdef->hosts[foundMatchedEntry]);
+ ipdef->hosts[foundMatchedEntry] = host;
memset(&host, 0, sizeof(host));
} else if ((command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST) ||
@@ -2779,21 +2805,13 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
goto cleanup;
/* log error if an entry with same name/address/ip already exists */
- for (i = 0; i < ipdef->nhosts; i++) {
- if ((host.mac && ipdef->hosts[i].mac &&
- !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) ||
- (host.name &&
- STREQ_NULLABLE(host.name, ipdef->hosts[i].name)) ||
- (VIR_SOCKET_ADDR_VALID(&host.ip) &&
- virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip))) {
- g_autofree char *ip = virSocketAddrFormat(&host.ip);
+ if (foundMatchedEntry >= 0) {
+ virReportError(VIR_ERR_OPERATION_INVALID,
+ _("there is an existing dhcp host entry in network '%1$s' that matches \"<host mac='%2$s' name='%3$s' ip='%4$s'/>\""),
+ def->name, host.mac ? host.mac : _("unknown"),
+ host.name, ip ? ip : _("unknown"));
+ goto cleanup;
- virReportError(VIR_ERR_OPERATION_INVALID,
- _("there is an existing dhcp host entry in network '%1$s' that matches \"<host mac='%2$s' name='%3$s' ip='%4$s'/>\""),
- def->name, host.mac ? host.mac : _("unknown"),
- host.name, ip ? ip : _("unknown"));
- goto cleanup;
- }
}
/* add to beginning/end of list */
@@ -2804,18 +2822,8 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
goto cleanup;
} else if (command == VIR_NETWORK_UPDATE_COMMAND_DELETE) {
- /* find matching entry - all specified attributes must match */
- for (i = 0; i < ipdef->nhosts; i++) {
- if ((!host.mac || !ipdef->hosts[i].mac ||
- !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) &&
- (!host.name ||
- STREQ_NULLABLE(host.name, ipdef->hosts[i].name)) &&
- (!VIR_SOCKET_ADDR_VALID(&host.ip) ||
- virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip))) {
- break;
- }
- }
- if (i == ipdef->nhosts) {
+ /* log error if there is no entry with exact match*/
+ if (foundExactEntry == -1) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("couldn't locate a matching dhcp host entry in network '%1$s'"),
def->name);
@@ -2823,8 +2831,8 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
}
/* remove it */
- virNetworkDHCPHostDefClear(&ipdef->hosts[i]);
- VIR_DELETE_ELEMENT(ipdef->hosts, i, ipdef->nhosts);
+ virNetworkDHCPHostDefClear(&ipdef->hosts[foundExactEntry]);
+ VIR_DELETE_ELEMENT(ipdef->hosts, foundExactEntry, ipdef->nhosts);
} else {
virNetworkDefUpdateUnknownCommand(command);
@@ -2865,6 +2873,14 @@ virNetworkDefUpdateIPDHCPRange(virNetworkDef *def,
return -1;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("dhcp ranges cannot be modified, use add command instead of modify-or-add"));
+ return -1;
+ }
+
if (virNetworkDHCPRangeDefParseXML(def->name, ipdef, ctxt->node, &range) < 0)
return -1;
@@ -2964,6 +2980,13 @@ virNetworkDefUpdateForwardInterface(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("forward interface entries cannot be modified, use add command instead of modify-or-add"));
+ goto cleanup;
+ }
+
/* parsing this is so simple that it doesn't have its own function */
iface.type = VIR_NETWORK_FORWARD_HOSTDEV_DEVICE_NETDEV;
if (!(iface.device.dev = virXMLPropString(ctxt->node, "dev"))) {
@@ -3085,6 +3108,18 @@ virNetworkDefUpdatePortGroup(virNetworkDef *def,
goto cleanup;
}
+ /* modify-or-add: convert command to add or modify based on foundName */
+ if (foundName == -1) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST;
+ else if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_LAST;
+ } else if (foundName >= 0) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_MODIFY;
+ }
+
/* if there is already a different default, we can't make this
* one the default.
*/
@@ -3153,6 +3188,13 @@ virNetworkDefUpdateDNSHost(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS HOST records cannot be modified, use add instead of modify-or-add"));
+ goto cleanup;
+ }
+
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "host") < 0)
goto cleanup;
@@ -3249,6 +3291,13 @@ virNetworkDefUpdateDNSSrv(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS SRV records cannot be modified, use add command instead of modify-or-add"));
+ goto cleanup;
+ }
+
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "srv") < 0)
goto cleanup;
@@ -3330,6 +3379,13 @@ virNetworkDefUpdateDNSTxt(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS TXT records cannot be modified, use add command instead of modify-or-add"));
+ goto cleanup;
+ }
+
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "txt") < 0)
goto cleanup;
diff --git a/tools/virsh-network.c b/tools/virsh-network.c
index 6fcc7fd8ee..88eb673482 100644
--- a/tools/virsh-network.c
+++ b/tools/virsh-network.c
@@ -1215,7 +1215,8 @@ static const vshCmdOptDef opts_network_update[] = {
.positional = true,
.required = true,
.completer = virshNetworkUpdateCommandCompleter,
- .help = N_("type of update (add-first, add-last (add), delete, or modify)")
+ .help = N_("type of update (add-first, add-last (add), delete, modify,"
+ "modify-or-add, or modify-or-add-first)")
},
{.name = "section",
.type = VSH_OT_STRING,
@@ -1245,7 +1246,8 @@ static const vshCmdOptDef opts_network_update[] = {
VIR_ENUM_IMPL(virshNetworkUpdateCommand,
VIR_NETWORK_UPDATE_COMMAND_LAST,
- "none", "modify", "delete", "add-last", "add-first");
+ "none", "modify", "delete", "add-last", "add-first", "modify-or-add",
+ "modify-or-add-first");
VIR_ENUM_IMPL(virshNetworkSection,
VIR_NETWORK_SECTION_LAST,
--
2.39.2
1
0
For the links of drvinterface, drvnetwork, drvnwfilter, and Nagios-virt,
there are no alternative docs. Just remove them directly.
Signed-off-by: Han Han <hhan(a)redhat.com>
---
docs/apps.rst | 10 ++--------
docs/kbase/live_full_disk_backup.rst | 2 +-
docs/manpages/virt-sanlock-cleanup.rst | 2 +-
docs/manpages/virtinterfaced.rst | 1 -
docs/manpages/virtnetworkd.rst | 1 -
docs/manpages/virtnwfilterd.rst | 1 -
docs/manpages/virtstoraged.rst | 2 +-
docs/manpages/virtvzd.rst | 2 +-
docs/windows.rst | 2 +-
9 files changed, 7 insertions(+), 16 deletions(-)
diff --git a/docs/apps.rst b/docs/apps.rst
index b7d19e15d5..443c888c4d 100644
--- a/docs/apps.rst
+++ b/docs/apps.rst
@@ -35,7 +35,7 @@ virsh
machine to be cloned to form a new virtual machine. It automates
copying of data across to new disk images, and updates the UUID, MAC
address, and name in the configuration.
-`virt-df <https://people.redhat.com/rjones/virt-df/>`__
+`virt-df <https://libguestfs.org/virt-df.1.html>`__
Examine the utilization of each filesystem in a virtual machine from
the comfort of the host machine. This tool peeks into the guest disks
and determines how much space is used. It can cope with common Linux
@@ -235,13 +235,7 @@ Monitoring
The plugins provided by Guido G��nther allow to monitor various things
like network and block I/O with
`Munin <https://munin-monitoring.org/>`__.
-`Nagios-virt <https://people.redhat.com/rjones/nagios-virt/>`__
- Nagios-virt is a configuration tool to add monitoring of your
- virtualised domains to `Nagios <https://www.nagios.org/>`__. You can
- use this tool to either set up a new Nagios installation for your Xen
- or QEMU/KVM guests, or to integrate with your existing Nagios
- installation.
-`PCP <https://pcp.io/man/man1/pmdalibvirt.1.html>`__
+`PCP <https://man7.org/linux/man-pages/man1/pmdalibvirt.1.html>`__
The PCP libvirt PMDA (plugin) is part of the
`PCP <https://pcp.io/>`__ toolkit and provides hypervisor and guest
information and complete set of guest performance metrics. It
diff --git a/docs/kbase/live_full_disk_backup.rst b/docs/kbase/live_full_disk_backup.rst
index 562a9e87b0..f20169e314 100644
--- a/docs/kbase/live_full_disk_backup.rst
+++ b/docs/kbase/live_full_disk_backup.rst
@@ -12,7 +12,7 @@ space requirements. The following outlines an efficient method to do
that using libvirt's APIs. This method involves concepts: the notion of
`backing chains <https://libvirt.org/kbase/backing_chains.html>`_,
`QCOW2 overlays
-<https://qemu.readthedocs.io/en/latest/interop/live-block-operations.html#di…>`_,
+<https://www.qemu.org/docs/master/interop/live-block-operations.html#disk-im…>`_,
and a special operation called "active block-commit", which allows
live-merging an overlay disk image into its backing file.
diff --git a/docs/manpages/virt-sanlock-cleanup.rst b/docs/manpages/virt-sanlock-cleanup.rst
index 3ad70ce683..bf3ef6742b 100644
--- a/docs/manpages/virt-sanlock-cleanup.rst
+++ b/docs/manpages/virt-sanlock-cleanup.rst
@@ -75,5 +75,5 @@ PURPOSE
SEE ALSO
========
-virsh(1), `online instructions <https://libvirt.org/locking.html>`_,
+virsh(1), `online instructions <https://libvirt.org/kbase/locking.html>`_,
`https://libvirt.org/ <https://libvirt.org/>`_
diff --git a/docs/manpages/virtinterfaced.rst b/docs/manpages/virtinterfaced.rst
index 247a8c4009..ef63f4c278 100644
--- a/docs/manpages/virtinterfaced.rst
+++ b/docs/manpages/virtinterfaced.rst
@@ -211,4 +211,3 @@ SEE ALSO
virsh(1), libvirtd(8),
`https://libvirt.org/daemons.html <https://libvirt.org/daemons.html>`_,
-`https://libvirt.org/drvinterface.html <https://libvirt.org/drvinterface.html>`_
diff --git a/docs/manpages/virtnetworkd.rst b/docs/manpages/virtnetworkd.rst
index 22b3fc0f2d..3bd1dd3221 100644
--- a/docs/manpages/virtnetworkd.rst
+++ b/docs/manpages/virtnetworkd.rst
@@ -211,4 +211,3 @@ SEE ALSO
virsh(1), libvirtd(8),
`https://libvirt.org/daemons.html <https://libvirt.org/daemons.html>`_,
-`https://libvirt.org/drvnetwork.html <https://libvirt.org/drvnetwork.html>`_
diff --git a/docs/manpages/virtnwfilterd.rst b/docs/manpages/virtnwfilterd.rst
index b1fc45e7a2..1ec11c247f 100644
--- a/docs/manpages/virtnwfilterd.rst
+++ b/docs/manpages/virtnwfilterd.rst
@@ -211,4 +211,3 @@ SEE ALSO
virsh(1), libvirtd(8),
`https://libvirt.org/daemons.html <https://libvirt.org/daemons.html>`_,
-`https://libvirt.org/drvnwfilter.html <https://libvirt.org/drvnwfilter.html>`_
diff --git a/docs/manpages/virtstoraged.rst b/docs/manpages/virtstoraged.rst
index 70863282d1..fe966f3123 100644
--- a/docs/manpages/virtstoraged.rst
+++ b/docs/manpages/virtstoraged.rst
@@ -211,4 +211,4 @@ SEE ALSO
virsh(1), libvirtd(8),
`https://libvirt.org/daemons.html <https://libvirt.org/daemons.html>`_,
-`https://libvirt.org/drvstorage.html <https://libvirt.org/drvstorage.html>`_
+`https://libvirt.org/storage.html <https://libvirt.org/drvstorage.html>`_
diff --git a/docs/manpages/virtvzd.rst b/docs/manpages/virtvzd.rst
index aa44885d46..52aac2259c 100644
--- a/docs/manpages/virtvzd.rst
+++ b/docs/manpages/virtvzd.rst
@@ -211,4 +211,4 @@ SEE ALSO
virsh(1), libvirtd(8),
`https://libvirt.org/daemons.html <https://libvirt.org/daemons.html>`_,
-`https://libvirt.org/drvvz.html <https://libvirt.org/drvvz.html>`_
+`https://libvirt.org/drvopenvz.html <https://libvirt.org/drvopenvz.html>`_
diff --git a/docs/windows.rst b/docs/windows.rst
index b9aa5626cf..ee3caef41a 100644
--- a/docs/windows.rst
+++ b/docs/windows.rst
@@ -13,7 +13,7 @@ Installation packages
Users who need pre-built Windows DLLs of libvirt are advised to use the `Virt
Viewer <https://virt-manager.org>`__ pre-compiled `Windows MSI
-packages <https://virt-manager.org/download/>`__
+packages <https://virt-manager.org/download.html>`__
These installers include the libvirt, gtk-vnc and spice-gtk DLLs along with any
of their pre-requisite supporting DLLs, the virsh command line tool and the
--
2.45.1
3
4
[PATCH] virt-host-validate: Improve translatability of messages printed by 'virHostMsgCheck()'
by Peter Krempa 21 May '24
by Peter Krempa 21 May '24
21 May '24
Move the word 'Checking' into the appropriate formatting strings and
mark all outstanding ones for translation.
Resolves: https://gitlab.com/libvirt/libvirt/-/issues/637
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
tools/virt-host-validate-bhyve.c | 2 +-
tools/virt-host-validate-ch.c | 2 +-
tools/virt-host-validate-common.c | 18 +++++++++---------
tools/virt-host-validate-qemu.c | 4 ++--
4 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/tools/virt-host-validate-bhyve.c b/tools/virt-host-validate-bhyve.c
index db1cdd8e2c..adb5ae1717 100644
--- a/tools/virt-host-validate-bhyve.c
+++ b/tools/virt-host-validate-bhyve.c
@@ -28,7 +28,7 @@
#include "virt-host-validate-common.h"
#define MODULE_STATUS(mod, err_msg, err_code) \
- virHostMsgCheck("BHYVE", _("for %1$s module"), #mod); \
+ virHostMsgCheck("BHYVE", _("Checking for %1$s module"), #mod); \
if (mod ## _loaded) { \
virHostMsgPass(); \
} else { \
diff --git a/tools/virt-host-validate-ch.c b/tools/virt-host-validate-ch.c
index 9d235ed7ab..3f96423836 100644
--- a/tools/virt-host-validate-ch.c
+++ b/tools/virt-host-validate-ch.c
@@ -57,7 +57,7 @@ int virHostValidateCh(void)
}
if (hasVirtFlag) {
- virHostMsgCheck("CH", "%s", _("for hardware virtualization"));
+ virHostMsgCheck("CH", "%s", _("Checking for hardware virtualization"));
if (hasHwVirt) {
virHostMsgPass();
} else {
diff --git a/tools/virt-host-validate-common.c b/tools/virt-host-validate-common.c
index c8a23e2e99..58d8dbbaa1 100644
--- a/tools/virt-host-validate-common.c
+++ b/tools/virt-host-validate-common.c
@@ -66,7 +66,7 @@ void virHostMsgCheck(const char *prefix,
msg = g_strdup_vprintf(format, args);
va_end(args);
- fprintf(stdout, _("%1$6s: Checking %2$-60s: "), prefix, msg);
+ fprintf(stdout, "%1$6s: %2$-60s: ", prefix, msg);
}
static bool virHostMsgWantEscape(void)
@@ -137,7 +137,7 @@ int virHostValidateDeviceExists(const char *hvname,
virHostValidateLevel level,
const char *hint)
{
- virHostMsgCheck(hvname, "if device %s exists", dev_name);
+ virHostMsgCheck(hvname, _("Checking if device '%1$s' exists"), dev_name);
if (access(dev_name, F_OK) < 0) {
virHostMsgFail(level, "%s", hint);
@@ -154,7 +154,7 @@ int virHostValidateDeviceAccessible(const char *hvname,
virHostValidateLevel level,
const char *hint)
{
- virHostMsgCheck(hvname, "if device %s is accessible", dev_name);
+ virHostMsgCheck(hvname, _("Checking if device '%1$s' is accessible"), dev_name);
if (access(dev_name, R_OK|W_OK) < 0) {
virHostMsgFail(level, "%s", hint);
@@ -173,7 +173,7 @@ int virHostValidateNamespace(const char *hvname,
{
char nspath[100];
- virHostMsgCheck(hvname, "for namespace %s", ns_name);
+ virHostMsgCheck(hvname, _("Checking for namespace '%1$s'"), ns_name);
g_snprintf(nspath, sizeof(nspath), "/proc/self/ns/%s", ns_name);
@@ -256,7 +256,7 @@ int virHostValidateLinuxKernel(const char *hvname,
uname(&uts);
- virHostMsgCheck(hvname, _("for Linux >= %1$d.%2$d.%3$d"),
+ virHostMsgCheck(hvname, _("Checking for Linux >= %1$d.%2$d.%3$d"),
((version >> 16) & 0xff),
((version >> 8) & 0xff),
(version & 0xff));
@@ -302,7 +302,7 @@ int virHostValidateCGroupControllers(const char *hvname,
if (!(controllers & flag))
continue;
- virHostMsgCheck(hvname, "for cgroup '%s' controller support", cg_name);
+ virHostMsgCheck(hvname, _("Checking for cgroup '%1$s' controller support"), cg_name);
if (!virCgroupHasController(group, i)) {
ret = VIR_HOST_VALIDATE_FAILURE(level);
@@ -337,7 +337,7 @@ int virHostValidateIOMMU(const char *hvname,
struct dirent *dent;
int rc;
- virHostMsgCheck(hvname, "%s", _("for device assignment IOMMU support"));
+ virHostMsgCheck(hvname, "%s", _("Checking for device assignment IOMMU support"));
flags = virHostValidateGetCPUFlags();
@@ -423,7 +423,7 @@ int virHostValidateIOMMU(const char *hvname,
if (!S_ISDIR(sb.st_mode))
return 0;
- virHostMsgCheck(hvname, "%s", _("if IOMMU is enabled by kernel"));
+ virHostMsgCheck(hvname, "%s", _("Checking if IOMMU is enabled by kernel"));
if (sb.st_nlink <= 2) {
if (bootarg)
virHostMsgFail(level,
@@ -483,7 +483,7 @@ int virHostValidateSecureGuests(const char *hvname,
else if (flags && virBitmapIsBitSet(flags, VIR_HOST_VALIDATE_CPU_FLAG_SEV))
hasAMDSev = true;
- virHostMsgCheck(hvname, "%s", _("for secure guest support"));
+ virHostMsgCheck(hvname, "%s", _("Checking for secure guest support"));
if (ARCH_IS_S390(arch)) {
if (hasFac158) {
if (!virFileIsDir("/sys/firmware/uv")) {
diff --git a/tools/virt-host-validate-qemu.c b/tools/virt-host-validate-qemu.c
index 3eeee516d3..b685fa01ba 100644
--- a/tools/virt-host-validate-qemu.c
+++ b/tools/virt-host-validate-qemu.c
@@ -64,7 +64,7 @@ int virHostValidateQEMU(void)
}
if (hasVirtFlag) {
- virHostMsgCheck("QEMU", "%s", _("for hardware virtualization"));
+ virHostMsgCheck("QEMU", "%s", _("Checking for hardware virtualization"));
if (hasHwVirt) {
virHostMsgPass();
} else {
@@ -86,7 +86,7 @@ int virHostValidateQEMU(void)
}
if (arch == VIR_ARCH_PPC64 || arch == VIR_ARCH_PPC64LE) {
- virHostMsgCheck("QEMU", "%s", _("for PowerPC KVM module loaded"));
+ virHostMsgCheck("QEMU", "%s", _("Checking for PowerPC KVM module loaded"));
if (!virHostKernelModuleIsLoaded("kvm_hv"))
virHostMsgFail(VIR_HOST_VALIDATE_WARN,
--
2.45.0
3
2
[PATCH] Сheck snapshot disk is not NULL when searching it in the VM config
by Fima Shevrin 20 May '24
by Fima Shevrin 20 May '24
20 May '24
When creating a snapshot of a VM with multiple hard disks,
the snapshot takes into account the presence of all disks
in the system. If, over time, one of the disks is deleted,
the snapshot will continue to store knowledge of the deleted disk.
This results in the fact that at the moment of deleting the snapshot,
at the validation stage, a disk from the snapshot will be searched which
is not in the VM configuration. As a result, vmdisk variable will
be equal to NULL. Dereferencing a null pointer at the time of calling
virStorageSourceIsSameLocation(vmdisk->src, disk->src) will result in SIGSEGV.
Signed-off-by: Fima Shevrin <efim.shevrin(a)virtuozzo.com>
---
src/qemu/qemu_snapshot.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c
index 09ec959f10..bf93cd485e 100644
--- a/src/qemu/qemu_snapshot.c
+++ b/src/qemu/qemu_snapshot.c
@@ -3806,7 +3806,7 @@ qemuSnapshotDeleteValidate(virDomainObj *vm,
vmdisk = qemuDomainDiskByName(vm->def, snapDisk->name);
disk = qemuDomainDiskByName(snapdef->parent.dom, snapDisk->name);
- if (!virStorageSourceIsSameLocation(vmdisk->src, disk->src)) {
+ if (vmdisk != NULL && !virStorageSourceIsSameLocation(vmdisk->src, disk->src)) {
virReportError(VIR_ERR_OPERATION_UNSUPPORTED,
_("disk image '%1$s' for internal snapshot '%2$s' is not the same as disk image currently used by VM"),
snapDisk->name, snap->def->name);
--
2.34.1
4
3
We are getting close to 10.4.0 release of libvirt. To aim for the
release on Monday 03 Jun I suggest entering the freeze on Tuesday 28
May and tagging RC2 on Thursday 30 May.
I hope this works for everyone.
Jirka
1
0
[PATCH] rpc: avoid leak of GSource in use for interrupting main loop
by Daniel P. Berrangé 17 May '24
by Daniel P. Berrangé 17 May '24
17 May '24
We never release the reference on the GSource created for
interrupting the main loop, nor do we remove it from the
main context if our thread is woken up prior to the wakeup
callback firing.
This can result in a leak of GSource objects, along with an
ever growing list of GSources attached to the main context,
which will gradually slow down execution of the loop, as
several operations are O(N) for the number of attached GSource
objects.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
src/rpc/virnetclient.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/rpc/virnetclient.c b/src/rpc/virnetclient.c
index 147b0d661a..6d424eb599 100644
--- a/src/rpc/virnetclient.c
+++ b/src/rpc/virnetclient.c
@@ -1946,7 +1946,7 @@ static int virNetClientIO(virNetClient *client,
/* Check to see if another thread is dispatching */
if (client->haveTheBuck) {
/* Force other thread to wakeup from poll */
- GSource *wakeup = g_idle_source_new();
+ g_autoptr(GSource) wakeup = g_idle_source_new();
g_source_set_callback(wakeup, virNetClientIOWakeup, client->eventLoop, NULL);
g_source_attach(wakeup, client->eventCtx);
@@ -1968,6 +1968,7 @@ static int virNetClientIO(virNetClient *client,
return -1;
}
+ g_source_destroy(wakeup);
VIR_DEBUG("Woken up from sleep head=%p call=%p",
client->waitDispatch, thiscall);
/* Three reasons we can be woken up
--
2.43.0
2
1
17 May '24
There was no test for this and we mistakenly used 'B' rather than 'T'
when constructing the json value for this parameter. Thus, a value of
'off' was VIR_TRISTATE_SWITCH_OFF=2, which was translated to a boolean
value of 'true'.
Signed-off-by: Jonathon Jongsma <jjongsma(a)redhat.com>
---
src/qemu/qemu_command.c | 2 +-
.../hostdev-pci-display-ramfb.x86_64-latest.args | 1 +
.../hostdev-pci-display-ramfb.x86_64-latest.xml | 6 ++++++
tests/qemuxmlconfdata/hostdev-pci-display-ramfb.xml | 5 +++++
4 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 63bfeb790e..2d0eddc79e 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -4798,7 +4798,7 @@ qemuBuildPCIHostdevDevProps(const virDomainDef *def,
"p:bootindex", dev->info->effectiveBootIndex,
"S:failover_pair_id", failover_pair_id,
"S:display", qemuOnOffAuto(pcisrc->display),
- "B:ramfb", pcisrc->ramfb,
+ "T:ramfb", pcisrc->ramfb,
NULL) < 0)
return NULL;
diff --git a/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.x86_64-latest.args b/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.x86_64-latest.args
index 6a3bfbe6fb..e6e538ef1c 100644
--- a/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.x86_64-latest.args
@@ -29,5 +29,6 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest2/.config \
-audiodev '{"id":"audio1","driver":"none"}' \
-vnc 127.0.0.1:0,audiodev=audio1 \
-device '{"driver":"vfio-pci-nohotplug","host":"0000:06:12.5","id":"hostdev0","display":"on","ramfb":true,"bus":"pci.0","addr":"0x2"}' \
+-device '{"driver":"vfio-pci","host":"0000:06:13.6","id":"hostdev1","display":"off","ramfb":false,"bus":"pci.0","addr":"0x3"}' \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
-msg timestamp=on
diff --git a/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.x86_64-latest.xml b/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.x86_64-latest.xml
index 16e8a1dee2..18b9bfb5bf 100644
--- a/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.x86_64-latest.xml
+++ b/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.x86_64-latest.xml
@@ -39,6 +39,12 @@
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</hostdev>
+ <hostdev mode='subsystem' type='pci' managed='no' display='off' ramfb='off'>
+ <source>
+ <address domain='0x0000' bus='0x06' slot='0x13' function='0x6'/>
+ </source>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+ </hostdev>
<memballoon model='none'/>
</devices>
</domain>
diff --git a/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.xml b/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.xml
index 39c84da7e1..d263342b1d 100644
--- a/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.xml
+++ b/tests/qemuxmlconfdata/hostdev-pci-display-ramfb.xml
@@ -25,6 +25,11 @@
<address domain='0x0000' bus='0x06' slot='0x12' function='0x5'/>
</source>
</hostdev>
+ <hostdev mode='subsystem' type='pci' display='off' ramfb='off'>
+ <source>
+ <address domain='0x0000' bus='0x06' slot='0x13' function='0x6'/>
+ </source>
+ </hostdev>
<video>
<model type='none'/>
</video>
--
2.45.0
2
1
This patch series extends the current evdev device implementation to allow
hotplugging, including live attachment and detachment.
Resolves: https://gitlab.com/libvirt/libvirt/-/issues/529
Rayhan Faizel (2):
qemu: Implement support for hotplugging evdev input devices
qemuhotplugtest: Add testcases for hotplugging evdev input devices
src/qemu/qemu_command.c | 2 +-
src/qemu/qemu_command.h | 3 +
src/qemu/qemu_hotplug.c | 95 +++++++++++++------
tests/qemuhotplugtest.c | 5 +
.../qemuhotplug-input-evdev.xml | 3 +
.../qemuhotplug-base-live+input-evdev.xml | 58 +++++++++++
6 files changed, 137 insertions(+), 29 deletions(-)
create mode 100644 tests/qemuhotplugtestdevices/qemuhotplug-input-evdev.xml
create mode 100644 tests/qemuhotplugtestdomains/qemuhotplug-base-live+input-evdev.xml
--
2.34.1
2
3
CI pipeline: https://gitlab.com/abologna/libvirt/-/pipelines/1292193155
Andrea Bolognani (4):
rpm: Drop weak dependency on ssh-proxy from client
rpm: Only Recommend ssh-proxy
rpm: Move dependency on ssh-proxy to QEMU driver
rpm: Drop with_ssh_proxy define
libvirt.spec.in | 23 ++---------------------
1 file changed, 2 insertions(+), 21 deletions(-)
--
2.45.0
3
12
[PATCH 0/2] hw/core: revert deprecation of 'parameter=1' for SMP topology
by Daniel P. Berrangé 16 May '24
by Daniel P. Berrangé 16 May '24
16 May '24
Since QEMU 9.0, users are complaining that depecation messages are shown
for every VM libvirt starts. This is due to the newly introduced
deprecation of 'parameter=1' for -smp. This proposes reverting that, see
the 1st patch for further commentary.
Daniel P. Berrangé (2):
hw/core: allow parameter=1 for CPU topology on any machine
tests: add testing of parameter=1 for SMP topology
docs/about/deprecated.rst | 14 -------
hw/core/machine-smp.c | 82 ++++++++++++-------------------------
tests/unit/test-smp-parse.c | 16 ++++++--
3 files changed, 38 insertions(+), 74 deletions(-)
--
2.43.0
4
11
The current way of updating a network configuration uses `virsh
net-update` to add, delete or modify entries. But with such a mechansim
one should know if an entry with current info already exists. Adding
modify-or-add option automatically performs either modify or add
depending on the current state.
Resolves: https://gitlab.com/libvirt/libvirt/-/issues/363
Signed-off-by: Abhiram Tilak <atp.exp(a)gmail.com>
---
Changes in v2:
- Removed the modify-or-add functionality for sections
where modify is not applicable.
- Changed the existing implementation of `UpdateIPDHCPHost`,
to avoid code duplication.
- Changed the implementation of modify-or-delete to reassign
the `command` variable instead of using multiple nested conditions.
docs/manpages/virsh.rst | 5 +-
include/libvirt/libvirt-network.h | 12 +--
src/conf/network_conf.c | 134 +++++++++++++++++++++---------
tools/virsh-network.c | 6 +-
4 files changed, 110 insertions(+), 47 deletions(-)
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index 115b802c45..0da3827f6b 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -5908,7 +5908,10 @@ changes optionally taking effect immediately, without needing to
destroy and re-start the network.
*command* is one of "add-first", "add-last", "add" (a synonym for
-add-last), "delete", or "modify".
+add-last), "delete", "modify", "modify-or-add" (modify + add-last), or
+"modify-or-add-first". The 'modify-or-add*' commands perform modify or
+add operation depending on the given state, and can be useful for
+scripting.
*section* is one of "bridge", "domain", "ip", "ip-dhcp-host",
"ip-dhcp-range", "forward", "forward-interface", "forward-pf",
diff --git a/include/libvirt/libvirt-network.h b/include/libvirt/libvirt-network.h
index 58591be7ac..bb4468b160 100644
--- a/include/libvirt/libvirt-network.h
+++ b/include/libvirt/libvirt-network.h
@@ -176,11 +176,13 @@ int virNetworkUndefine (virNetworkPtr network);
* Since: 0.10.2
*/
typedef enum {
- VIR_NETWORK_UPDATE_COMMAND_NONE = 0, /* invalid (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_MODIFY = 1, /* modify an existing element (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_DELETE = 2, /* delete an existing element (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_ADD_LAST = 3, /* add an element at end of list (Since: 0.10.2) */
- VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST = 4, /* add an element at start of list (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_NONE = 0, /* invalid (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_MODIFY = 1, /* modify an existing element (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_DELETE = 2, /* delete an existing element (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_ADD_LAST = 3, /* add an element at end of list (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST = 4, /* add an element at start of list (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST = 5, /* conditionally modify or add an element at end (Since: 10.4.0) */
+ VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST = 6, /* conditionally modify or add an element at start (Since: 10.4.0) */
# ifdef VIR_ENUM_SENTINELS
VIR_NETWORK_UPDATE_COMMAND_LAST /* (Since: 0.10.2) */
# endif
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
index cc92ed0b03..a7c3dea163 100644
--- a/src/conf/network_conf.c
+++ b/src/conf/network_conf.c
@@ -2720,6 +2720,7 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
virNetworkIPDef *ipdef = virNetworkIPDefByIndex(def, parentIndex);
virNetworkDHCPHostDef host = { 0 };
bool partialOkay = (command == VIR_NETWORK_UPDATE_COMMAND_DELETE);
+ int foundMatchedEntry = -1, foundExactEntry = -1;
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "host") < 0)
goto cleanup;
@@ -2740,22 +2741,47 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
goto cleanup;
}
- if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
+ /* check if the entry already exsits */
+ for (i = 0; i < ipdef->nhosts; i++) {
- /* search for the entry with this (ip|mac|name),
- * and update the IP+(mac|name) */
- for (i = 0; i < ipdef->nhosts; i++) {
- if ((host.mac && ipdef->hosts[i].mac &&
- !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) ||
- (VIR_SOCKET_ADDR_VALID(&host.ip) &&
- virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip)) ||
- (host.name &&
- STREQ_NULLABLE(host.name, ipdef->hosts[i].name))) {
- break;
- }
+ /* try to match any of (ip|mac|name) attributes */
+ if ((host.mac && ipdef->hosts[i].mac &&
+ !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) ||
+ (VIR_SOCKET_ADDR_VALID(&host.ip) &&
+ virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip)) ||
+ (host.name &&
+ STREQ_NULLABLE(host.name, ipdef->hosts[i].name))) {
+ foundMatchedEntry = i;
+ }
+
+ /* find exact entry - all specified attributes must match */
+ if ((!host.mac || !ipdef->hosts[i].mac ||
+ !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) &&
+ (!host.name ||
+ STREQ_NULLABLE(host.name, ipdef->hosts[i].name)) &&
+ (!VIR_SOCKET_ADDR_VALID(&host.ip) ||
+ virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip))) {
+ foundExactEntry = i;
+ break;
}
+ }
+
+ /* modify-or-add: convert command to add or modify based on foundEntry */
+ if (foundEntry == -1) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST;
+ else if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_LAST;
+ } else if (foundEntry >= 0) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_MODIFY;
+ }
+
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
- if (i == ipdef->nhosts) {
+ /* log error if no such entry exists to be modified */
+ if (foundMatchedEntry == -1) {
g_autofree char *ip = virSocketAddrFormat(&host.ip);
virReportError(VIR_ERR_OPERATION_INVALID,
_("couldn't locate an existing dhcp host entry with \"mac='%1$s'\" \"name='%2$s'\" \"ip='%3$s'\" in network '%4$s'"),
@@ -2779,21 +2805,13 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
goto cleanup;
/* log error if an entry with same name/address/ip already exists */
- for (i = 0; i < ipdef->nhosts; i++) {
- if ((host.mac && ipdef->hosts[i].mac &&
- !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) ||
- (host.name &&
- STREQ_NULLABLE(host.name, ipdef->hosts[i].name)) ||
- (VIR_SOCKET_ADDR_VALID(&host.ip) &&
- virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip))) {
- g_autofree char *ip = virSocketAddrFormat(&host.ip);
+ if (foundMatchedEntry >= 0) {
+ virReportError(VIR_ERR_OPERATION_INVALID,
+ _("there is an existing dhcp host entry in network '%1$s' that matches \"<host mac='%2$s' name='%3$s' ip='%4$s'/>\""),
+ def->name, host.mac ? host.mac : _("unknown"),
+ host.name, ip ? ip : _("unknown"));
+ goto cleanup;
- virReportError(VIR_ERR_OPERATION_INVALID,
- _("there is an existing dhcp host entry in network '%1$s' that matches \"<host mac='%2$s' name='%3$s' ip='%4$s'/>\""),
- def->name, host.mac ? host.mac : _("unknown"),
- host.name, ip ? ip : _("unknown"));
- goto cleanup;
- }
}
/* add to beginning/end of list */
@@ -2804,18 +2822,8 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
goto cleanup;
} else if (command == VIR_NETWORK_UPDATE_COMMAND_DELETE) {
- /* find matching entry - all specified attributes must match */
- for (i = 0; i < ipdef->nhosts; i++) {
- if ((!host.mac || !ipdef->hosts[i].mac ||
- !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) &&
- (!host.name ||
- STREQ_NULLABLE(host.name, ipdef->hosts[i].name)) &&
- (!VIR_SOCKET_ADDR_VALID(&host.ip) ||
- virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip))) {
- break;
- }
- }
- if (i == ipdef->nhosts) {
+ /* log error if there is no entry with exact match*/
+ if (foundExactEntry == -1) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("couldn't locate a matching dhcp host entry in network '%1$s'"),
def->name);
@@ -2865,6 +2873,14 @@ virNetworkDefUpdateIPDHCPRange(virNetworkDef *def,
return -1;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("dhcp ranges cannot be modified, use add command instead of modify-or-add"));
+ return -1;
+ }
+
if (virNetworkDHCPRangeDefParseXML(def->name, ipdef, ctxt->node, &range) < 0)
return -1;
@@ -2964,6 +2980,13 @@ virNetworkDefUpdateForwardInterface(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("forward interface entries cannot be modified, use add command instead of modify-or-add"));
+ goto cleanup;
+ }
+
/* parsing this is so simple that it doesn't have its own function */
iface.type = VIR_NETWORK_FORWARD_HOSTDEV_DEVICE_NETDEV;
if (!(iface.device.dev = virXMLPropString(ctxt->node, "dev"))) {
@@ -3085,6 +3108,18 @@ virNetworkDefUpdatePortGroup(virNetworkDef *def,
goto cleanup;
}
+ /* modify-or-add: convert command to add or modify based on foundName */
+ if (foundName == -1) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST;
+ else if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_ADD_LAST;
+ } else if (foundName >= 0) {
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST)
+ command = VIR_NETWORK_UPDATE_COMMAND_MODIFY;
+ }
+
/* if there is already a different default, we can't make this
* one the default.
*/
@@ -3153,6 +3188,13 @@ virNetworkDefUpdateDNSHost(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS HOST records cannot be modified, use add instead of modify-or-add"));
+ goto cleanup;
+ }
+
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "host") < 0)
goto cleanup;
@@ -3249,6 +3291,13 @@ virNetworkDefUpdateDNSSrv(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS SRV records cannot be modified, use add command instead of modify-or-add"));
+ goto cleanup;
+ }
+
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "srv") < 0)
goto cleanup;
@@ -3330,6 +3379,13 @@ virNetworkDefUpdateDNSTxt(virNetworkDef *def,
goto cleanup;
}
+ if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_ADD_LAST) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS TXT records cannot be modified, use add command instead of modify-or-add"));
+ goto cleanup;
+ }
+
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "txt") < 0)
goto cleanup;
diff --git a/tools/virsh-network.c b/tools/virsh-network.c
index 597e3d4530..d7dc5df5a8 100644
--- a/tools/virsh-network.c
+++ b/tools/virsh-network.c
@@ -1231,7 +1231,8 @@ static const vshCmdOptDef opts_network_update[] = {
.positional = true,
.required = true,
.completer = virshNetworkUpdateCommandCompleter,
- .help = N_("type of update (add-first, add-last (add), delete, or modify)")
+ .help = N_("type of update (add-first, add-last (add), delete, modify,"
+ "modify-or-add, or modify-or-add-first)")
},
{.name = "section",
.type = VSH_OT_STRING,
@@ -1260,7 +1261,8 @@ static const vshCmdOptDef opts_network_update[] = {
VIR_ENUM_IMPL(virshNetworkUpdateCommand,
VIR_NETWORK_UPDATE_COMMAND_LAST,
- "none", "modify", "delete", "add-last", "add-first");
+ "none", "modify", "delete", "add-last", "add-first", "modify-or-add",
+ "modify-or-add-first");
VIR_ENUM_IMPL(virshNetworkSection,
VIR_NETWORK_SECTION_LAST,
--
2.42.1
2
1
The current way of updating a network configuration uses `virsh
net-update` to add, delete or modify entries. But with such a mechansim
one should know if an entry with current info already exists. Adding
modify-or-add option automatically performs either modify or add
depending on the current state.
Fixes: https://gitlab.com/libvirt/libvirt/-/issues/363
Signed-off-by: Abhiram Tilak <atp.exp(a)gmail.com>
---
docs/manpages/virsh.rst | 5 +-
include/libvirt/libvirt-network.h | 2 +
src/conf/network_conf.c | 148 ++++++++++++++++++++++++------
tools/virsh-network.c | 4 +-
4 files changed, 126 insertions(+), 33 deletions(-)
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index 115b802c45..dc91ba895c 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -5908,7 +5908,10 @@ changes optionally taking effect immediately, without needing to
destroy and re-start the network.
*command* is one of "add-first", "add-last", "add" (a synonym for
-add-last), "delete", or "modify".
+add-last), "delete", "modify", "modify-or-add" (modify + add-last),
+"modify-or-add-first". The 'modify-or-add' commands perform modify or
+add operation depending on the given state, and can be useful for
+scripting.
*section* is one of "bridge", "domain", "ip", "ip-dhcp-host",
"ip-dhcp-range", "forward", "forward-interface", "forward-pf",
diff --git a/include/libvirt/libvirt-network.h b/include/libvirt/libvirt-network.h
index 58591be7ac..a6e132f407 100644
--- a/include/libvirt/libvirt-network.h
+++ b/include/libvirt/libvirt-network.h
@@ -181,6 +181,8 @@ typedef enum {
VIR_NETWORK_UPDATE_COMMAND_DELETE = 2, /* delete an existing element (Since: 0.10.2) */
VIR_NETWORK_UPDATE_COMMAND_ADD_LAST = 3, /* add an element at end of list (Since: 0.10.2) */
VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST = 4, /* add an element at start of list (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_LAST = 5, /* if exists modify or add an element at end of list (Since: 0.10.2) */
+ VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST = 6, /* if exists modify or add an element at start of list (Since: 0.10.2) */
# ifdef VIR_ENUM_SENTINELS
VIR_NETWORK_UPDATE_COMMAND_LAST /* (Since: 0.10.2) */
# endif
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
index cc92ed0b03..2835395385 100644
--- a/src/conf/network_conf.c
+++ b/src/conf/network_conf.c
@@ -2721,6 +2721,9 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
virNetworkDHCPHostDef host = { 0 };
bool partialOkay = (command == VIR_NETWORK_UPDATE_COMMAND_DELETE);
+ /* added for modify-or-add feature */
+ bool modified = false;
+
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "host") < 0)
goto cleanup;
@@ -2826,7 +2829,34 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
virNetworkDHCPHostDefClear(&ipdef->hosts[i]);
VIR_DELETE_ELEMENT(ipdef->hosts, i, ipdef->nhosts);
- } else {
+ } else if ((command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_LAST) ||
+ (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST)) {
+
+ /* find entries with matching name/address/ip */
+ for (i = 0; i < ipdef->nhosts; i++) {
+ if ((host.mac && ipdef->hosts[i].mac &&
+ !virMacAddrCompare(host.mac, ipdef->hosts[i].mac)) ||
+ (host.name &&
+ STREQ_NULLABLE(host.name, ipdef->hosts[i].name)) ||
+ (VIR_SOCKET_ADDR_VALID(&host.ip) &&
+ virSocketAddrEqual(&host.ip, &ipdef->hosts[i].ip))) {
+
+ modified = true;
+ break;
+ }
+ }
+
+ /* if element is found then modify, or else add to beginning/end of list */
+ if (modified) {
+ virNetworkDHCPHostDefClear(&ipdef->hosts[i]);
+ ipdef->hosts[i] = host;
+ memset(&host, 0, sizeof(host));
+ } else if (VIR_INSERT_ELEMENT(ipdef->hosts,
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST
+ ? 0 : ipdef->nhosts,
+ ipdef->nhosts, host) < 0)
+ goto cleanup;
+ } else {
virNetworkDefUpdateUnknownCommand(command);
goto cleanup;
}
@@ -2885,7 +2915,9 @@ virNetworkDefUpdateIPDHCPRange(virNetworkDef *def,
}
if ((command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST) ||
- (command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST)) {
+ (command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST) ||
+ (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_LAST) ||
+ (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST)) {
if (virNetworkDefUpdateCheckMultiDHCP(def, ipdef) < 0)
return -1;
@@ -2894,17 +2926,24 @@ virNetworkDefUpdateIPDHCPRange(virNetworkDef *def,
g_autofree char *startip = virSocketAddrFormat(&range.addr.start);
g_autofree char *endip = virSocketAddrFormat(&range.addr.end);
- virReportError(VIR_ERR_OPERATION_INVALID,
- _("there is an existing dhcp range entry in network '%1$s' that matches \"<range start='%2$s' end='%3$s'/>\""),
- def->name,
- startip ? startip : "unknown",
- endip ? endip : "unknown");
+
+ if ((command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST) ||
+ (command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST))
+ virReportError(VIR_ERR_OPERATION_INVALID,
+ _("there is an existing dhcp range entry in network '%1$s' that matches \"<range start='%2$s' end='%3$s'/>\""),
+ def->name,
+ startip ? startip : "unknown",
+ endip ? endip : "unknown");
+ else
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("dhcp ranges cannot be modified, only added or deleted"));
return -1;
}
/* add to beginning/end of list */
if (VIR_INSERT_ELEMENT(ipdef->ranges,
- command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST
+ (command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST)
? 0 : ipdef->nranges,
ipdef->nranges, range) < 0)
return -1;
@@ -2981,18 +3020,26 @@ virNetworkDefUpdateForwardInterface(virNetworkDef *def,
}
if ((command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST) ||
- (command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST)) {
+ (command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST) ||
+ (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_LAST) ||
+ (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST)) {
if (i < def->forward.nifs) {
- virReportError(VIR_ERR_OPERATION_INVALID,
- _("there is an existing interface entry in network '%1$s' that matches \"<interface dev='%2$s'>\""),
- def->name, iface.device.dev);
+ if ((command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST) ||
+ command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST)
+ virReportError(VIR_ERR_OPERATION_INVALID,
+ _("there is an existing interface entry in network '%1$s' that matches \"<interface dev='%2$s'>\""),
+ def->name, iface.device.dev);
+ else
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("forward interface entries cannot be modified, only added or deleted"));
goto cleanup;
}
/* add to beginning/end of list */
if (VIR_INSERT_ELEMENT(def->forward.ifs,
- command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST
+ (command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST)
? 0 : def->forward.nifs,
def->forward.nifs, iface) < 0)
goto cleanup;
@@ -3056,6 +3103,9 @@ virNetworkDefUpdatePortGroup(virNetworkDef *def,
int ret = -1;
virPortGroupDef portgroup = { 0 };
+ /* added for modify-or-add feature */
+ bool modified = false;
+
if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "portgroup") < 0)
goto cleanup;
@@ -3097,6 +3147,17 @@ virNetworkDefUpdatePortGroup(virNetworkDef *def,
goto cleanup;
}
+ /* modify found entries for modify-or-add command */
+ if (foundName >= 0 && (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_LAST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST)) {
+
+ /* replace existing entry */
+ virPortGroupDefClear(&def->portGroups[foundName]);
+ def->portGroups[foundName] = portgroup;
+ memset(&portgroup, 0, sizeof(portgroup));
+ modified = true;
+ }
+
if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
/* replace existing entry */
@@ -3105,11 +3166,14 @@ virNetworkDefUpdatePortGroup(virNetworkDef *def,
memset(&portgroup, 0, sizeof(portgroup));
} else if ((command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST) ||
- (command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST)) {
+ (command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST) ||
+ (!modified && command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_LAST) ||
+ (!modified && command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST)) {
/* add to beginning/end of list */
if (VIR_INSERT_ELEMENT(def->portGroups,
- command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST
+ (command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST)
? 0 : def->nPortGroups,
def->nPortGroups, portgroup) < 0)
goto cleanup;
@@ -3144,7 +3208,9 @@ virNetworkDefUpdateDNSHost(virNetworkDef *def,
virNetworkDNSDef *dns = &def->dns;
virNetworkDNSHostDef host = { 0 };
bool isAdd = (command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST ||
- command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST);
+ command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_LAST);
int foundCt = 0;
if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
@@ -3185,15 +3251,21 @@ virNetworkDefUpdateDNSHost(virNetworkDef *def,
if (isAdd) {
if (foundCt > 0) {
- virReportError(VIR_ERR_OPERATION_INVALID,
- _("there is already at least one DNS HOST record with a matching field in network %1$s"),
- def->name);
+ if ((command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST) ||
+ command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST)
+ virReportError(VIR_ERR_OPERATION_INVALID,
+ _("there is already at least one DNS HOST record with a matching field in network %1$s"),
+ def->name);
+ else
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS HOST records cannot be modified, only added or deleted"));
goto cleanup;
}
/* add to beginning/end of list */
if (VIR_INSERT_ELEMENT(dns->hosts,
- command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST
+ (command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST)
? 0 : dns->nhosts, dns->nhosts, host) < 0)
goto cleanup;
} else if (command == VIR_NETWORK_UPDATE_COMMAND_DELETE) {
@@ -3240,7 +3312,9 @@ virNetworkDefUpdateDNSSrv(virNetworkDef *def,
virNetworkDNSDef *dns = &def->dns;
virNetworkDNSSrvDef srv = { 0 };
bool isAdd = (command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST ||
- command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST);
+ command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_LAST);
int foundCt = 0;
if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
@@ -3268,15 +3342,21 @@ virNetworkDefUpdateDNSSrv(virNetworkDef *def,
if (isAdd) {
if (foundCt > 0) {
- virReportError(VIR_ERR_OPERATION_INVALID,
- _("there is already at least one DNS SRV record matching all specified fields in network %1$s"),
- def->name);
+ if ((command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST) ||
+ (command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST))
+ virReportError(VIR_ERR_OPERATION_INVALID,
+ _("there is already at least one DNS SRV record matching all specified fields in network %1$s"),
+ def->name);
+ else
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS SRV records cannot be modified, only added or deleted"));
goto cleanup;
}
/* add to beginning/end of list */
if (VIR_INSERT_ELEMENT(dns->srvs,
- command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST
+ (command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST)
? 0 : dns->nsrvs, dns->nsrvs, srv) < 0)
goto cleanup;
} else if (command == VIR_NETWORK_UPDATE_COMMAND_DELETE) {
@@ -3322,7 +3402,9 @@ virNetworkDefUpdateDNSTxt(virNetworkDef *def,
virNetworkDNSDef *dns = &def->dns;
virNetworkDNSTxtDef txt = { 0 };
bool isAdd = (command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST ||
- command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST);
+ command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_LAST);
if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
@@ -3344,15 +3426,21 @@ virNetworkDefUpdateDNSTxt(virNetworkDef *def,
if (isAdd) {
if (foundIdx < dns->ntxts) {
- virReportError(VIR_ERR_OPERATION_INVALID,
- _("there is already a DNS TXT record with name '%1$s' in network %2$s"),
- txt.name, def->name);
+ if ((command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST) ||
+ (command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST))
+ virReportError(VIR_ERR_OPERATION_INVALID,
+ _("there is already a DNS TXT record with name '%1$s' in network %2$s"),
+ txt.name, def->name);
+ else
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("DNS TXT records cannot be modified, only added or deleted"));
goto cleanup;
}
/* add to beginning/end of list */
if (VIR_INSERT_ELEMENT(dns->txts,
- command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST
+ (command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST ||
+ command == VIR_NETWORK_UPDATE_COMMAND_MODIFY_OR_ADD_FIRST)
? 0 : dns->ntxts, dns->ntxts, txt) < 0)
goto cleanup;
} else if (command == VIR_NETWORK_UPDATE_COMMAND_DELETE) {
diff --git a/tools/virsh-network.c b/tools/virsh-network.c
index 597e3d4530..c30305ac50 100644
--- a/tools/virsh-network.c
+++ b/tools/virsh-network.c
@@ -1231,7 +1231,7 @@ static const vshCmdOptDef opts_network_update[] = {
.positional = true,
.required = true,
.completer = virshNetworkUpdateCommandCompleter,
- .help = N_("type of update (add-first, add-last (add), delete, or modify)")
+ .help = N_("type of update (add-first, add-last (add), delete, modify, modify-or-add, or modify-or-add-first)")
},
{.name = "section",
.type = VSH_OT_STRING,
@@ -1260,7 +1260,7 @@ static const vshCmdOptDef opts_network_update[] = {
VIR_ENUM_IMPL(virshNetworkUpdateCommand,
VIR_NETWORK_UPDATE_COMMAND_LAST,
- "none", "modify", "delete", "add-last", "add-first");
+ "none", "modify", "delete", "add-last", "add-first", "modify-or-add", "modify-or-add-first");
VIR_ENUM_IMPL(virshNetworkSection,
VIR_NETWORK_SECTION_LAST,
--
2.44.0
3
3
15 May '24
Adds documentation for the <snapshotDeleteInProgress/> element to
the libvirt snapshot format XML reference. The <snapshotDeleteInProgress/>
element, introduced at commit 565bcb5d79, ensures the consistency of qcow2
images during snapshot deletion operations by marking disks in snapshot
metadata as invalid until deletion is successfully completed.
The commit was merged but the related documentation was missing.
Resolves: https://gitlab.com/libvirt/libvirt/-/issues/609
Signed-off-by: Abhiram Tilak <atp.exp(a)gmail.com>
---
Changes in v2:
- Insert a note to advise users against adding or removing the internal tag
"snapshotDeleteInProgress" manually.
docs/formatsnapshot.rst | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/docs/formatsnapshot.rst b/docs/formatsnapshot.rst
index 570a988442..f802a8e227 100644
--- a/docs/formatsnapshot.rst
+++ b/docs/formatsnapshot.rst
@@ -170,6 +170,15 @@ The top-level ``domainsnapshot`` element may contain the following elements:
sub-element can be used with same semantics as the identically named
subelement of the domain definition disk's driver.
+ ``snapshotDeleteInProgress``
+
+ If a the snapshot is marked for deletion, the disk is invalidated. The
+ sub-element ``snapshotDeleteInProgress`` marks the disk in the snapshot
+ as invalid until the snapshot delete is completed successfully. This
+ element is typically generated by the snapshot-create API and should
+ not be manually added or removed.
+ :since:`Since 9.0`
+
``creationTime``
A readonly representation of the time this snapshot was created. The time is
--
2.44.0
3
2
15 May '24
I've noticed some tests fail to run under valgrind with the
following error:
$ valgrind --leak-check=full --trace-children=yes ./qemuxmlconftest
valgrind: symbol lookup error: libvirt.git/_build/tests/libdomaincapsmock.so: undefined symbol: virQEMUCapsGet
But without valgrind the test passes just fine. While we usually
don't want to change our code just to adhere to random tools, in
this case we ought to make an exception because valgrind helps us
to detect memory leaks.
NB, the --trace-children=yes is needed whenever a test
re-executes itself, i.e. when it uses mocks. Otherwise we'd just
get (boring) result for the first invocation of main() which does
nothing more than sets up the environment and calls exec().
When running the test binary without valgrind I can see the
libtest_qemu_driver.so being loaded even after exec:
$ LD_DEBUG=libs ./qemuxmlconftest 2>&1 | grep -e libtest_qemu_driver.so -e virQEMUCapsGet
6439: find library=libtest_qemu_driver.so [0]; searching
6439: trying file=libvirt.git/_build/tests/../src/libtest_qemu_driver.so
6439: trying file=libvirt.git/_build/tests/glibc-hwcaps/x86-64-v3/libtest_qemu_driver.so
6439: trying file=libvirt.git/_build/tests/glibc-hwcaps/x86-64-v2/libtest_qemu_driver.so
6439: trying file=libvirt.git/_build/tests/libtest_qemu_driver.so
6439: calling init: libvirt.git/_build/tests/libtest_qemu_driver.so
6439: find library=libtest_qemu_driver.so [0]; searching
6439: trying file=libvirt.git/_build/tests/libtest_qemu_driver.so
6439: calling init: libvirt.git/_build/tests/libtest_qemu_driver.so
6439: calling fini: libvirt.git/_build/tests/libtest_qemu_driver.so [0]
But running the same under valgrind:
$ LD_DEBUG=libs valgrind --leak-check=full --trace-children=yes ./qemuxmlconftest 2>&1 | grep -e libtest_qemu_driver.so -e virQEMUCapsGet
6515: find library=libtest_qemu_driver.so [0]; searching
6515: trying file=libvirt.git/_build/tests/../src/libtest_qemu_driver.so
6515: trying file=libvirt.git/_build/tests/glibc-hwcaps/x86-64-v3/libtest_qemu_driver.so
6515: trying file=libvirt.git/_build/tests/glibc-hwcaps/x86-64-v2/libtest_qemu_driver.so
6515: trying file=libvirt.git/_build/tests/libtest_qemu_driver.so
6515: calling init: libvirt.git/_build/tests/libtest_qemu_driver.so
6515: libvirt.git/_build/tests/libdomaincapsmock.so: error: symbol lookup error: undefined symbol: virQEMUCapsGet (fatal)
valgrind: symbol lookup error: libvirt.git/_build/tests/libdomaincapsmock.so: undefined symbol: virQEMUCapsGet
To me, it looks like valgrind forced linker to lookup symbols
"sooner", as individual libraries are loaded. But I must admit I
have no idea how valgrind does that (or if that's even valgrind's
'fault').
But fix is pretty simple: link mocks that rely on symbols from
the QEMU driver with the QEMU driver, well, its test suite
suitable version (libtest_qemu_driver.so).
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
This obsoletes some patches I've sent earlier:
https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/message/RM5…
https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/message/ZB4…
My initial fix was bothering me as I did not understand what was
happening nor why it made the valgrind happy. I still don't quite
understand what is going on, but at least this fix seems 'more correct'.
tests/meson.build | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/tests/meson.build b/tests/meson.build
index ba2d319347..2f1eda1f95 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -73,7 +73,6 @@ endif
# * deps - additional dependencies (optional, default [])
mock_libs = [
- { 'name': 'domaincapsmock' },
{ 'name': 'vircgroupmock' },
{ 'name': 'virdnsmasqmock' },
{ 'name': 'virfilecachemock' },
@@ -175,7 +174,7 @@ if conf.has('WITH_QEMU')
{ 'name': 'qemucaps2xmlmock' },
{ 'name': 'qemucapsprobemock', 'link_with': [ test_qemu_driver_lib ] },
{ 'name': 'qemucpumock' },
- { 'name': 'qemuhotplugmock', 'link_with': [ test_utils_qemu_lib, test_utils_lib ] },
+ { 'name': 'qemuhotplugmock', 'link_with': [ test_qemu_driver_lib, test_utils_qemu_lib, test_utils_lib ] },
{ 'name': 'qemuxml2argvmock' },
{ 'name': 'virhostidmock' },
]
@@ -185,6 +184,11 @@ else
test_utils_qemu_monitor_lib = []
endif
+mock_libs += [
+ # domaincapsmock has some code guarded with WITH_QEMU
+ { 'name': 'domaincapsmock', 'link_with': [ test_qemu_driver_lib ] },
+]
+
test_file_wrapper_lib = static_library(
'test_file_wrapper',
[ 'virfilewrapper.c' ],
--
2.43.2
2
1
The message that's thrown at users when they try to open a pull
request on github suggests opening the MR on gitlab instead.
While this works for other libvirt subprojects, for the main
libvirt.git we still use e-mail workflow. Update the message to
reflect this fact.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
.github/workflows/lockdown.yml | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/lockdown.yml b/.github/workflows/lockdown.yml
index 74931a2944..69c0b8eb38 100644
--- a/.github/workflows/lockdown.yml
+++ b/.github/workflows/lockdown.yml
@@ -39,13 +39,10 @@ jobs:
repostory hosted on GitLab, merge requests opened here are not
processed.
- We kindly request that contributors fork the project at
+ For main libvirt.git repository all patch review and discussion
+ only occurs on the devel mailing list.
- https://gitlab.com/libvirt/libvirt/
-
- push changes to the fork, and then open a new merge request at
-
- https://gitlab.com/libvirt/libvirt/-/merge_requests/new
+ https://libvirt.org/submitting-patches.html
Thank you for your time and understanding.
lock-pr: true
--
2.43.2
2
1
Brown paper box was applied due to lack of paper bags.
Peter Krempa (3):
vsh: Fix '--help' option for virsh/virt-admin
virshtest: Add tests for '--help'
NEWS: Mention '--help' bug in virsh and virt-admin
NEWS.rst | 15 +++++++
tests/virshtest.c | 3 ++
tests/virshtestdata/help-option.in | 4 ++
tests/virshtestdata/help-option.out | 64 +++++++++++++++++++++++++++++
tools/vsh.c | 5 ++-
5 files changed, 90 insertions(+), 1 deletion(-)
create mode 100644 tests/virshtestdata/help-option.in
create mode 100644 tests/virshtestdata/help-option.out
--
2.45.0
2
4
[PATCH v2] qemu_hotplug: Properly assign USB address to hotplugged usb-net device
by Rayhan Faizel 14 May '24
by Rayhan Faizel 14 May '24
14 May '24
Previously, the network device hotplug logic would try to ensure only CCW or
PCI addresses. With recent support for the usb-net model, this patch will
ensure USB addresses for usb-net network devices.
[Changes in v2]
- Additional information in commit message
- Relevant gitlab issue link (mostly already resolved but hotplugging is
mentioned in one of the comments)
Resolves: https://gitlab.com/libvirt/libvirt/-/issues/14
Signed-off-by: Rayhan Faizel <rayhan.faizel(a)gmail.com>
---
src/qemu/qemu_hotplug.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 774962b0df..3b39941780 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -1159,8 +1159,11 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver,
goto cleanup;
}
- if (qemuDomainIsS390CCW(vm->def) &&
- net->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) {
+ if (net->model == VIR_DOMAIN_NET_MODEL_USB_NET) {
+ if (virDomainUSBAddressEnsure(priv->usbaddrs, &net->info) < 0)
+ goto cleanup;
+ } else if (qemuDomainIsS390CCW(vm->def) &&
+ net->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) {
net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW;
if (!(ccwaddrs = virDomainCCWAddressSetCreateFromDomain(vm->def)))
goto cleanup;
--
2.34.1
2
2
I've switched our CI jobs from AlmaLinux 8 to AlmaLinux 9, but
apparently forgot about two.
Michal Prívozník (2):
gitlab-ci: Switch potfile job to AlmaLinux 9
gitlab-ci: Switch coverity job to AlmaLinux 9
.gitlab-ci.yml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
--
2.43.2
2
3
v2 of:
https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/MMEN…
diff to v1:
- Juggled some patches around, namely: squashed Fedora and AlmaLinux
drop & reintroduction patches, reordered some for easier review.
- Switched website job to AlmaLinux 9
- Enhanced commit message on the last commit to explain seemingly
unrelated changes.
Example of green pipeline:
https://gitlab.com/MichalPrivoznik/libvirt/-/pipelines/1281843566
Michal Prívozník (10):
domaincapsmock: Drop link time dependency on virQEMUCapsGet()
qemuxml2argvmock: Drop link time dependency on qemuFDPassDirectNew()
testutilsqemu: Don't leak struct testQemuArgs::vdpafds
security: Fix return types of .probe callbacks
meson: Disable -fsanitize=function
ci: Switch from AlmaLinux 8 to AlmaLinux 9
ci: Switch from Fedora 38 to Fedora 40
ci: Drop Ubuntu 20.04
meson: Bump glib version to 2.58.0
ci: Introduce Ubuntu 24.04
.gitlab-ci.yml | 6 +-
.../{almalinux-8.sh => almalinux-9.sh} | 8 +-
ci/buildenv/centos-stream-9.sh | 1 +
ci/buildenv/debian-12-cross-aarch64.sh | 1 +
ci/buildenv/debian-12-cross-armv6l.sh | 1 +
ci/buildenv/debian-12-cross-armv7l.sh | 1 +
ci/buildenv/debian-12-cross-i686.sh | 1 +
ci/buildenv/debian-12-cross-mips64el.sh | 1 +
ci/buildenv/debian-12-cross-mipsel.sh | 1 +
ci/buildenv/debian-12-cross-ppc64le.sh | 1 +
ci/buildenv/debian-12-cross-s390x.sh | 1 +
ci/buildenv/debian-12.sh | 1 +
ci/buildenv/debian-sid-cross-aarch64.sh | 1 +
ci/buildenv/debian-sid-cross-armv6l.sh | 1 +
ci/buildenv/debian-sid-cross-armv7l.sh | 1 +
ci/buildenv/debian-sid-cross-i686.sh | 1 +
ci/buildenv/debian-sid-cross-mips64el.sh | 1 +
ci/buildenv/debian-sid-cross-ppc64le.sh | 1 +
ci/buildenv/debian-sid-cross-s390x.sh | 1 +
ci/buildenv/debian-sid.sh | 1 +
ci/buildenv/fedora-39.sh | 1 +
...-mingw32.sh => fedora-40-cross-mingw32.sh} | 1 +
...-mingw64.sh => fedora-40-cross-mingw64.sh} | 1 +
ci/buildenv/{fedora-38.sh => fedora-40.sh} | 1 +
ci/buildenv/fedora-rawhide-cross-mingw32.sh | 1 +
ci/buildenv/fedora-rawhide-cross-mingw64.sh | 1 +
ci/buildenv/fedora-rawhide.sh | 1 +
.../{ubuntu-2004.sh => ubuntu-2404.sh} | 8 +-
...ux-8.Dockerfile => almalinux-9.Dockerfile} | 10 +-
ci/containers/centos-stream-9.Dockerfile | 1 +
.../debian-12-cross-aarch64.Dockerfile | 1 +
.../debian-12-cross-armv6l.Dockerfile | 1 +
.../debian-12-cross-armv7l.Dockerfile | 1 +
ci/containers/debian-12-cross-i686.Dockerfile | 1 +
.../debian-12-cross-mips64el.Dockerfile | 1 +
.../debian-12-cross-mipsel.Dockerfile | 1 +
.../debian-12-cross-ppc64le.Dockerfile | 1 +
.../debian-12-cross-s390x.Dockerfile | 1 +
ci/containers/debian-12.Dockerfile | 1 +
.../debian-sid-cross-aarch64.Dockerfile | 1 +
.../debian-sid-cross-armv6l.Dockerfile | 1 +
.../debian-sid-cross-armv7l.Dockerfile | 1 +
.../debian-sid-cross-i686.Dockerfile | 1 +
.../debian-sid-cross-mips64el.Dockerfile | 1 +
.../debian-sid-cross-ppc64le.Dockerfile | 1 +
.../debian-sid-cross-s390x.Dockerfile | 1 +
ci/containers/debian-sid.Dockerfile | 1 +
ci/containers/fedora-39.Dockerfile | 1 +
...ile => fedora-40-cross-mingw32.Dockerfile} | 3 +-
...ile => fedora-40-cross-mingw64.Dockerfile} | 3 +-
...ora-38.Dockerfile => fedora-40.Dockerfile} | 3 +-
.../fedora-rawhide-cross-mingw32.Dockerfile | 1 +
.../fedora-rawhide-cross-mingw64.Dockerfile | 1 +
ci/containers/fedora-rawhide.Dockerfile | 1 +
...2004.Dockerfile => ubuntu-2404.Dockerfile} | 11 +-
ci/gitlab/builds.yml | 113 ++++++++--------
ci/gitlab/containers.yml | 54 ++++----
ci/integration.yml | 24 ----
ci/lcitool/projects/libvirt.yml | 1 +
ci/manifest.yml | 40 +++---
meson.build | 15 ++-
src/libvirt_private.syms | 1 -
src/security/security_apparmor.c | 2 +-
src/security/security_selinux.c | 2 +-
src/util/glibcompat.c | 125 ------------------
src/util/glibcompat.h | 10 --
tests/domaincapsmock.c | 13 +-
tests/qemuxml2argvmock.c | 8 +-
tests/testutilsqemu.c | 1 +
69 files changed, 203 insertions(+), 305 deletions(-)
rename ci/buildenv/{almalinux-8.sh => almalinux-9.sh} (93%)
rename ci/buildenv/{fedora-38-cross-mingw32.sh => fedora-40-cross-mingw32.sh} (98%)
rename ci/buildenv/{fedora-38-cross-mingw64.sh => fedora-40-cross-mingw64.sh} (98%)
rename ci/buildenv/{fedora-38.sh => fedora-40.sh} (99%)
rename ci/buildenv/{ubuntu-2004.sh => ubuntu-2404.sh} (94%)
rename ci/containers/{almalinux-8.Dockerfile => almalinux-9.Dockerfile} (91%)
rename ci/containers/{fedora-38-cross-mingw32.Dockerfile => fedora-40-cross-mingw32.Dockerfile} (97%)
rename ci/containers/{fedora-38-cross-mingw64.Dockerfile => fedora-40-cross-mingw64.Dockerfile} (97%)
rename ci/containers/{fedora-38.Dockerfile => fedora-40.Dockerfile} (97%)
rename ci/containers/{ubuntu-2004.Dockerfile => ubuntu-2404.Dockerfile} (93%)
--
2.43.2
2
11
[PATCH] docs: mention migrate-setmaxdowntime's impact on snapshot-create
by Abhiram Tilak 13 May '24
by Abhiram Tilak 13 May '24
13 May '24
The migrate-setmaxdowntime command sets the max allowed downtime during
live-migration, but since `snapshot-create` performs qmp migration, it also
affects the downtime during internal/external snapshot creation.
Resolves: https://gitlab.com/libvirt/libvirt/-/issues/593
Signed-off-by: Abhiram Tilak <atp.exp(a)gmail.com>
---
This issue was a minor change, yet it has remained without any updates for
some time.
docs/manpages/virsh.rst | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index fa038e4547..18bdae53c9 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -3717,7 +3717,8 @@ migrate-setmaxdowntime
Set maximum tolerable downtime for a domain which is being live-migrated to
another host. The *downtime* is a number of milliseconds the guest is allowed
-to be down at the end of live migration.
+to be down at the end of live migration. This is also used to set the max
+downtime for creating a snapshot using ``snapshot-create``.
migrate-setspeed
--
2.44.0
3
2
13 May '24
Adds documentation for the <snapshotDeleteInProgress/> element to
the libvirt snapshot format XML reference. The <snapshotDeleteInProgress/>
element, introduced at commit 565bcb5d79, ensures the consistency of qcow2
images during snapshot deletion operations by marking disks in snapshot
metadata as invalid until deletion is successfully completed.
The commit was merged but the related documentation was missing.
Resolves: https://gitlab.com/libvirt/libvirt/-/issues/609
Signed-off-by: Abhiram Tilak <atp.exp(a)gmail.com>
---
docs/formatsnapshot.rst | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/docs/formatsnapshot.rst b/docs/formatsnapshot.rst
index 570a988442..e3d0d47e00 100644
--- a/docs/formatsnapshot.rst
+++ b/docs/formatsnapshot.rst
@@ -170,6 +170,13 @@ The top-level ``domainsnapshot`` element may contain the following elements:
sub-element can be used with same semantics as the identically named
subelement of the domain definition disk's driver.
+ ``snapshotDeleteInProgress``
+
+ If a the snapshot is marked for deletion, the disk is invalidated. The
+ sub-element ``snapshotDeleteInProgress`` marks the disk in the snapshot
+ as invalid until the snapshot delete is completed successfully.
+ :since:`Since 9.0`
+
``creationTime``
A readonly representation of the time this snapshot was created. The time is
--
2.44.0
3
2
It can be safely removed from the VMX, VMWare will still boot the
machine and once another ethernet is added it is updated in the VMX to
zero. So do not require it and default to zero too since this part of
the XML is done as best effort and it is mentioned even in our
documentation.
Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
---
src/vmx/vmx.c | 2 +-
tests/vmx2xmldata/ethernet-vds-no-portid.vmx | 10 ++++++++
tests/vmx2xmldata/ethernet-vds-no-portid.xml | 24 ++++++++++++++++++++
3 files changed, 35 insertions(+), 1 deletion(-)
create mode 100644 tests/vmx2xmldata/ethernet-vds-no-portid.vmx
create mode 100644 tests/vmx2xmldata/ethernet-vds-no-portid.xml
diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
index f4182bc5184c..d90b41d2ad14 100644
--- a/src/vmx/vmx.c
+++ b/src/vmx/vmx.c
@@ -2901,7 +2901,7 @@ virVMXParseEthernet(virConf *conf, int controller, virDomainNetDef **def)
portId_name,
&(*def)->data.vds.port_id,
0,
- false) < 0 ||
+ true) < 0 ||
virVMXGetConfigLong(conf,
connectionId_name,
&(*def)->data.vds.connection_id,
diff --git a/tests/vmx2xmldata/ethernet-vds-no-portid.vmx b/tests/vmx2xmldata/ethernet-vds-no-portid.vmx
new file mode 100644
index 000000000000..7761accb3abc
--- /dev/null
+++ b/tests/vmx2xmldata/ethernet-vds-no-portid.vmx
@@ -0,0 +1,10 @@
+config.version = "8"
+virtualHW.version = "4"
+ethernet0.present = "true"
+ethernet0.virtualDev = "e1000e"
+ethernet0.addressType = "vpx"
+ethernet0.generatedAddress = "00:50:56:87:65:43"
+ethernet0.dvs.switchId = "50 34 26 b2 94 e9 3b 16-1d 68 87 bf ff 4a 54 40"
+ethernet0.dvs.portgroupId = "dvportgroup-1285"
+ethernet0.dvs.connectionId = "408217997"
+displayName = "test"
diff --git a/tests/vmx2xmldata/ethernet-vds-no-portid.xml b/tests/vmx2xmldata/ethernet-vds-no-portid.xml
new file mode 100644
index 000000000000..60fd9c99feb9
--- /dev/null
+++ b/tests/vmx2xmldata/ethernet-vds-no-portid.xml
@@ -0,0 +1,24 @@
+<domain type='vmware'>
+ <name>test</name>
+ <uuid>00000000-0000-0000-0000-000000000000</uuid>
+ <memory unit='KiB'>32768</memory>
+ <currentMemory unit='KiB'>32768</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='i686'>hvm</type>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <interface type='vds'>
+ <mac address='00:50:56:87:65:43' type='generated'/>
+ <source switchid='503426b2-94e9-3b16-1d68-87bfff4a5440' portid='0' portgroupid='dvportgroup-1285' connectionid='408217997'/>
+ <model type='e1000e'/>
+ </interface>
+ <video>
+ <model type='vmvga' vram='4096' primary='yes'/>
+ </video>
+ </devices>
+</domain>
--
2.45.0
2
1
[PATCH] qemu_hotplug: Properly assign USB address to hotplugged usb-net device
by Rayhan Faizel 13 May '24
by Rayhan Faizel 13 May '24
13 May '24
Signed-off-by: Rayhan Faizel <rayhan.faizel(a)gmail.com>
---
src/qemu/qemu_hotplug.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 774962b0df..3b39941780 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -1159,8 +1159,11 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver,
goto cleanup;
}
- if (qemuDomainIsS390CCW(vm->def) &&
- net->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) {
+ if (net->model == VIR_DOMAIN_NET_MODEL_USB_NET) {
+ if (virDomainUSBAddressEnsure(priv->usbaddrs, &net->info) < 0)
+ goto cleanup;
+ } else if (qemuDomainIsS390CCW(vm->def) &&
+ net->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) {
net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW;
if (!(ccwaddrs = virDomainCCWAddressSetCreateFromDomain(vm->def)))
goto cleanup;
--
2.34.1
2
1
Signed-off-by: Rayhan Faizel <rayhan.faizel(a)gmail.com>
---
NEWS.rst | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/NEWS.rst b/NEWS.rst
index d72c15bf10..a0e82fcc02 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -22,6 +22,12 @@ v10.4.0 (unreleased)
It is now possible to set on/off ``ras`` feature in the domain XML for virt
(Arm) machine type as ``<ras state='on'/>``.
+ * qemu: Support for ``virtio`` sound model
+
+ Sound devices can now be configured to use the virtio model with
+ ``<sound model='virtio'/>``. This model is available from QEMU 8.2.0
+ onwards.
+
* **Improvements**
* **Bug fixes**
--
2.34.1
2
1
From: "Dr. David Alan Gilbert" <dave(a)treblig.org>
'virQEMUCapsSearchData' has been unused since
commit bc33b8c63911 ("qemu: capabilities: Drop the
virQEMUCapsCacheLookupByArch function")
Remove it.
Signed-off-by: Dr. David Alan Gilbert <dave(a)treblig.org>
Reviewed-by: Ján Tomko <jtomko(a)redhat.com>
---
Pushed.
src/qemu/qemu_capabilities.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 45525db803..28c20a9555 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -801,12 +801,6 @@ struct _virQEMUCaps {
virQEMUCapsAccel tcg;
};
-struct virQEMUCapsSearchData {
- virArch arch;
- const char *binaryFilter;
-};
-
-
static virClass *virQEMUCapsClass;
static void virQEMUCapsDispose(void *obj);
--
2.45.0
1
0