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
- 17 participants
- 40169 discussions
[libvirt] [PATCH] network: allow DHCP/DNS/TFTP explicitly in OUTPUT rules
by Daniel P. Berrangé 28 Sep '19
by Daniel P. Berrangé 28 Sep '19
28 Sep '19
From: Malina Salina <malina.salina(a)protonmail.com>
While the default iptables setup used by Fedora/RHEL distros
only restricts traffic on the INPUT and/or FORWARD rules,
some users might have custom firewalls that restrict the
OUTPUT rules too.
These can prevent DHCP/DNS/TFTP responses from dnsmasq
from reaching the guest VMs. We should thus whitelist
these protocols in the OUTPUT chain, as well as the
INPUT chain.
Signed-off-by: Malina Salina <malina.salina(a)protonmail.com>
Initial patch then modified to add unit tests and IPv6
support
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
src/libvirt_private.syms | 2 +
src/network/bridge_driver_linux.c | 29 ++++++++++---
src/util/viriptables.c | 36 ++++++++++++++++
src/util/viriptables.h | 8 ++++
.../nat-default-linux.args | 21 ++++++++++
.../nat-ipv6-linux.args | 42 +++++++++++++++++++
.../nat-many-ips-linux.args | 21 ++++++++++
.../nat-no-dhcp-linux.args | 42 +++++++++++++++++++
.../nat-tftp-linux.args | 28 +++++++++++++
.../route-default-linux.args | 21 ++++++++++
10 files changed, 244 insertions(+), 6 deletions(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 7b681fac64..83b97af364 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -2186,6 +2186,7 @@ iptablesAddForwardRejectIn;
iptablesAddForwardRejectOut;
iptablesAddOutputFixUdpChecksum;
iptablesAddTcpInput;
+iptablesAddTcpOutput;
iptablesAddUdpInput;
iptablesAddUdpOutput;
iptablesRemoveDontMasquerade;
@@ -2198,6 +2199,7 @@ iptablesRemoveForwardRejectIn;
iptablesRemoveForwardRejectOut;
iptablesRemoveOutputFixUdpChecksum;
iptablesRemoveTcpInput;
+iptablesRemoveTcpOutput;
iptablesRemoveUdpInput;
iptablesRemoveUdpOutput;
iptablesSetDeletePrivate;
diff --git a/src/network/bridge_driver_linux.c b/src/network/bridge_driver_linux.c
index 35459c10d1..0b6ff45b17 100644
--- a/src/network/bridge_driver_linux.c
+++ b/src/network/bridge_driver_linux.c
@@ -553,18 +553,23 @@ networkAddGeneralIPv4FirewallRules(virFirewallPtr fw,
break;
}
- /* allow DHCP requests through to dnsmasq */
+ /* allow DHCP requests through to dnsmasq & back out */
iptablesAddTcpInput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 67);
iptablesAddUdpInput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 67);
+ iptablesAddTcpOutput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 68);
iptablesAddUdpOutput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 68);
- /* allow DNS requests through to dnsmasq */
+ /* allow DNS requests through to dnsmasq & back out */
iptablesAddTcpInput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 53);
iptablesAddUdpInput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 53);
+ iptablesAddTcpOutput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 53);
+ iptablesAddUdpOutput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 53);
- /* allow TFTP requests through to dnsmasq if necessary */
- if (ipv4def && ipv4def->tftproot)
+ /* allow TFTP requests through to dnsmasq if necessary & back out*/
+ if (ipv4def && ipv4def->tftproot) {
iptablesAddUdpInput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 69);
+ iptablesAddUdpOutput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 69);
+ }
/* Catch all rules to block forwarding to/from bridges */
iptablesAddForwardRejectOut(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge);
@@ -592,13 +597,18 @@ networkRemoveGeneralIPv4FirewallRules(virFirewallPtr fw,
iptablesRemoveForwardRejectIn(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge);
iptablesRemoveForwardRejectOut(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge);
- if (ipv4def && ipv4def->tftproot)
+ if (ipv4def && ipv4def->tftproot) {
iptablesRemoveUdpInput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 69);
+ iptablesRemoveUdpOutput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 69);
+ }
iptablesRemoveUdpInput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 53);
iptablesRemoveTcpInput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 53);
+ iptablesRemoveUdpOutput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 53);
+ iptablesRemoveTcpOutput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 53);
iptablesRemoveUdpOutput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 68);
+ iptablesRemoveTcpOutput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 68);
iptablesRemoveUdpInput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 67);
iptablesRemoveTcpInput(fw, VIR_FIREWALL_LAYER_IPV4, def->bridge, 67);
}
@@ -626,10 +636,14 @@ networkAddGeneralIPv6FirewallRules(virFirewallPtr fw,
iptablesAddForwardAllowCross(fw, VIR_FIREWALL_LAYER_IPV6, def->bridge);
if (virNetworkDefGetIPByIndex(def, AF_INET6, 0)) {
- /* allow DNS over IPv6 */
+ /* allow DNS over IPv6 & back out */
iptablesAddTcpInput(fw, VIR_FIREWALL_LAYER_IPV6, def->bridge, 53);
iptablesAddUdpInput(fw, VIR_FIREWALL_LAYER_IPV6, def->bridge, 53);
+ iptablesAddTcpOutput(fw, VIR_FIREWALL_LAYER_IPV6, def->bridge, 53);
+ iptablesAddUdpOutput(fw, VIR_FIREWALL_LAYER_IPV6, def->bridge, 53);
+ /* allow DHCPv6 & back out */
iptablesAddUdpInput(fw, VIR_FIREWALL_LAYER_IPV6, def->bridge, 547);
+ iptablesAddUdpOutput(fw, VIR_FIREWALL_LAYER_IPV6, def->bridge, 546);
}
}
@@ -643,7 +657,10 @@ networkRemoveGeneralIPv6FirewallRules(virFirewallPtr fw,
}
if (virNetworkDefGetIPByIndex(def, AF_INET6, 0)) {
+ iptablesRemoveUdpOutput(fw, VIR_FIREWALL_LAYER_IPV6, def->bridge, 546);
iptablesRemoveUdpInput(fw, VIR_FIREWALL_LAYER_IPV6, def->bridge, 547);
+ iptablesRemoveUdpOutput(fw, VIR_FIREWALL_LAYER_IPV6, def->bridge, 53);
+ iptablesRemoveTcpOutput(fw, VIR_FIREWALL_LAYER_IPV6, def->bridge, 53);
iptablesRemoveUdpInput(fw, VIR_FIREWALL_LAYER_IPV6, def->bridge, 53);
iptablesRemoveTcpInput(fw, VIR_FIREWALL_LAYER_IPV6, def->bridge, 53);
}
diff --git a/src/util/viriptables.c b/src/util/viriptables.c
index 0e3c0ad73a..46d0c3df7a 100644
--- a/src/util/viriptables.c
+++ b/src/util/viriptables.c
@@ -303,6 +303,42 @@ iptablesRemoveUdpInput(virFirewallPtr fw,
iptablesInput(fw, layer, deletePrivate, iface, port, REMOVE, 0);
}
+/**
+ * iptablesAddTcpOutput:
+ * @ctx: pointer to the IP table context
+ * @iface: the interface name
+ * @port: the TCP port to add
+ *
+ * Add an output to the IP table allowing access to the given @port from
+ * the given @iface interface for TCP packets
+ */
+void
+iptablesAddTcpOutput(virFirewallPtr fw,
+ virFirewallLayer layer,
+ const char *iface,
+ int port)
+{
+ iptablesOutput(fw, layer, true, iface, port, ADD, 1);
+}
+
+/**
+ * iptablesRemoveTcpOutput:
+ * @ctx: pointer to the IP table context
+ * @iface: the interface name
+ * @port: the UDP port to remove
+ *
+ * Removes an output from the IP table, hence forbidding access to the given
+ * @port from the given @iface interface for TCP packets
+ */
+void
+iptablesRemoveTcpOutput(virFirewallPtr fw,
+ virFirewallLayer layer,
+ const char *iface,
+ int port)
+{
+ iptablesOutput(fw, layer, deletePrivate, iface, port, REMOVE, 1);
+}
+
/**
* iptablesAddUdpOutput:
* @ctx: pointer to the IP table context
diff --git a/src/util/viriptables.h b/src/util/viriptables.h
index feea988acd..07b4851013 100644
--- a/src/util/viriptables.h
+++ b/src/util/viriptables.h
@@ -45,6 +45,14 @@ void iptablesRemoveUdpInput (virFirewallPtr fw,
const char *iface,
int port);
+void iptablesAddTcpOutput (virFirewallPtr fw,
+ virFirewallLayer layer,
+ const char *iface,
+ int port);
+void iptablesRemoveTcpOutput (virFirewallPtr fw,
+ virFirewallLayer layer,
+ const char *iface,
+ int port);
void iptablesAddUdpOutput (virFirewallPtr fw,
virFirewallLayer layer,
const char *iface,
diff --git a/tests/networkxml2firewalldata/nat-default-linux.args b/tests/networkxml2firewalldata/nat-default-linux.args
index c9d523d043..ab18f30bd0 100644
--- a/tests/networkxml2firewalldata/nat-default-linux.args
+++ b/tests/networkxml2firewalldata/nat-default-linux.args
@@ -16,6 +16,13 @@ iptables \
--table filter \
--insert LIBVIRT_OUT \
--out-interface virbr0 \
+--protocol tcp \
+--destination-port 68 \
+--jump ACCEPT
+iptables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
--protocol udp \
--destination-port 68 \
--jump ACCEPT
@@ -35,6 +42,20 @@ iptables \
--jump ACCEPT
iptables \
--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol tcp \
+--destination-port 53 \
+--jump ACCEPT
+iptables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol udp \
+--destination-port 53 \
+--jump ACCEPT
+iptables \
+--table filter \
--insert LIBVIRT_FWO \
--in-interface virbr0 \
--jump REJECT
diff --git a/tests/networkxml2firewalldata/nat-ipv6-linux.args b/tests/networkxml2firewalldata/nat-ipv6-linux.args
index a57b9266af..05d9ee33ca 100644
--- a/tests/networkxml2firewalldata/nat-ipv6-linux.args
+++ b/tests/networkxml2firewalldata/nat-ipv6-linux.args
@@ -16,6 +16,13 @@ iptables \
--table filter \
--insert LIBVIRT_OUT \
--out-interface virbr0 \
+--protocol tcp \
+--destination-port 68 \
+--jump ACCEPT
+iptables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
--protocol udp \
--destination-port 68 \
--jump ACCEPT
@@ -35,6 +42,20 @@ iptables \
--jump ACCEPT
iptables \
--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol tcp \
+--destination-port 53 \
+--jump ACCEPT
+iptables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol udp \
+--destination-port 53 \
+--jump ACCEPT
+iptables \
+--table filter \
--insert LIBVIRT_FWO \
--in-interface virbr0 \
--jump REJECT
@@ -81,11 +102,32 @@ ip6tables \
--jump ACCEPT
ip6tables \
--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol tcp \
+--destination-port 53 \
+--jump ACCEPT
+ip6tables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol udp \
+--destination-port 53 \
+--jump ACCEPT
+ip6tables \
+--table filter \
--insert LIBVIRT_INP \
--in-interface virbr0 \
--protocol udp \
--destination-port 547 \
--jump ACCEPT
+ip6tables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol udp \
+--destination-port 546 \
+--jump ACCEPT
iptables \
--table filter \
--insert LIBVIRT_FWO \
diff --git a/tests/networkxml2firewalldata/nat-many-ips-linux.args b/tests/networkxml2firewalldata/nat-many-ips-linux.args
index 1bdc43fd6a..82e1380f51 100644
--- a/tests/networkxml2firewalldata/nat-many-ips-linux.args
+++ b/tests/networkxml2firewalldata/nat-many-ips-linux.args
@@ -16,6 +16,13 @@ iptables \
--table filter \
--insert LIBVIRT_OUT \
--out-interface virbr0 \
+--protocol tcp \
+--destination-port 68 \
+--jump ACCEPT
+iptables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
--protocol udp \
--destination-port 68 \
--jump ACCEPT
@@ -35,6 +42,20 @@ iptables \
--jump ACCEPT
iptables \
--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol tcp \
+--destination-port 53 \
+--jump ACCEPT
+iptables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol udp \
+--destination-port 53 \
+--jump ACCEPT
+iptables \
+--table filter \
--insert LIBVIRT_FWO \
--in-interface virbr0 \
--jump REJECT
diff --git a/tests/networkxml2firewalldata/nat-no-dhcp-linux.args b/tests/networkxml2firewalldata/nat-no-dhcp-linux.args
index 7d359f3824..8954cc5473 100644
--- a/tests/networkxml2firewalldata/nat-no-dhcp-linux.args
+++ b/tests/networkxml2firewalldata/nat-no-dhcp-linux.args
@@ -16,6 +16,13 @@ iptables \
--table filter \
--insert LIBVIRT_OUT \
--out-interface virbr0 \
+--protocol tcp \
+--destination-port 68 \
+--jump ACCEPT
+iptables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
--protocol udp \
--destination-port 68 \
--jump ACCEPT
@@ -35,6 +42,20 @@ iptables \
--jump ACCEPT
iptables \
--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol tcp \
+--destination-port 53 \
+--jump ACCEPT
+iptables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol udp \
+--destination-port 53 \
+--jump ACCEPT
+iptables \
+--table filter \
--insert LIBVIRT_FWO \
--in-interface virbr0 \
--jump REJECT
@@ -81,11 +102,32 @@ ip6tables \
--jump ACCEPT
ip6tables \
--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol tcp \
+--destination-port 53 \
+--jump ACCEPT
+ip6tables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol udp \
+--destination-port 53 \
+--jump ACCEPT
+ip6tables \
+--table filter \
--insert LIBVIRT_INP \
--in-interface virbr0 \
--protocol udp \
--destination-port 547 \
--jump ACCEPT
+ip6tables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol udp \
+--destination-port 546 \
+--jump ACCEPT
iptables \
--table filter \
--insert LIBVIRT_FWO \
diff --git a/tests/networkxml2firewalldata/nat-tftp-linux.args b/tests/networkxml2firewalldata/nat-tftp-linux.args
index b721801b70..88e9929b62 100644
--- a/tests/networkxml2firewalldata/nat-tftp-linux.args
+++ b/tests/networkxml2firewalldata/nat-tftp-linux.args
@@ -16,6 +16,13 @@ iptables \
--table filter \
--insert LIBVIRT_OUT \
--out-interface virbr0 \
+--protocol tcp \
+--destination-port 68 \
+--jump ACCEPT
+iptables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
--protocol udp \
--destination-port 68 \
--jump ACCEPT
@@ -35,6 +42,20 @@ iptables \
--jump ACCEPT
iptables \
--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol tcp \
+--destination-port 53 \
+--jump ACCEPT
+iptables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol udp \
+--destination-port 53 \
+--jump ACCEPT
+iptables \
+--table filter \
--insert LIBVIRT_INP \
--in-interface virbr0 \
--protocol udp \
@@ -42,6 +63,13 @@ iptables \
--jump ACCEPT
iptables \
--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol udp \
+--destination-port 69 \
+--jump ACCEPT
+iptables \
+--table filter \
--insert LIBVIRT_FWO \
--in-interface virbr0 \
--jump REJECT
diff --git a/tests/networkxml2firewalldata/route-default-linux.args b/tests/networkxml2firewalldata/route-default-linux.args
index ed3c560f74..c427d9602d 100644
--- a/tests/networkxml2firewalldata/route-default-linux.args
+++ b/tests/networkxml2firewalldata/route-default-linux.args
@@ -16,6 +16,13 @@ iptables \
--table filter \
--insert LIBVIRT_OUT \
--out-interface virbr0 \
+--protocol tcp \
+--destination-port 68 \
+--jump ACCEPT
+iptables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
--protocol udp \
--destination-port 68 \
--jump ACCEPT
@@ -35,6 +42,20 @@ iptables \
--jump ACCEPT
iptables \
--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol tcp \
+--destination-port 53 \
+--jump ACCEPT
+iptables \
+--table filter \
+--insert LIBVIRT_OUT \
+--out-interface virbr0 \
+--protocol udp \
+--destination-port 53 \
+--jump ACCEPT
+iptables \
+--table filter \
--insert LIBVIRT_FWO \
--in-interface virbr0 \
--jump REJECT
--
2.21.0
2
1
[libvirt] [PATCH v2] tools: fix regression passing command with virt-login-shell
by Daniel P. Berrangé 28 Sep '19
by Daniel P. Berrangé 28 Sep '19
28 Sep '19
It is documented that a command to run inside the container can be
passed with the -c arg.
virt-login-shell -c "ls -l /"
This fixes
commit 4feeb2d986b98013ebfb1d41ab6b9007b6cce6e2
Author: Daniel P. Berrangé <berrange(a)redhat.com>
Date: Thu Aug 1 10:58:31 2019 +0100
tools: split virt-login-shell into two binaries
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
tools/virt-login-shell.c | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/tools/virt-login-shell.c b/tools/virt-login-shell.c
index f92cc0a749..7d1e0ccc8a 100644
--- a/tools/virt-login-shell.c
+++ b/tools/virt-login-shell.c
@@ -38,12 +38,8 @@
int main(int argc, char **argv) {
char uidstr[INT_BUFSIZE_BOUND(uid_t)];
char gidstr[INT_BUFSIZE_BOUND(gid_t)];
- const char *const newargv[] = {
- LIBEXECDIR "/virt-login-shell-helper",
- uidstr,
- gidstr,
- NULL,
- };
+ const char * newargv[6];
+ size_t nargs = 0;
char *newenv[] = {
NULL,
NULL,
@@ -60,10 +56,23 @@ int main(int argc, char **argv) {
exit(EXIT_FAILURE);
}
- if (argc != 1) {
- fprintf(stderr, "%s: no arguments expected\n", argv[0]);
+ newargv[nargs++] = LIBEXECDIR "/virt-login-shell-helper";
+ if (argc == 3) {
+ if (strcmp(argv[1], "-c") != 0) {
+ fprintf(stderr, "%s: syntax: %s [-c CMDSTR]\n", argv[0], argv[0]);
+ exit(EXIT_FAILURE);
+ }
+ newargv[nargs++] = argv[1];
+ newargv[nargs++] = argv[2];
+ } else if (argc != 1) {
+ fprintf(stderr, "%s: syntax: %s [-c CMDSTR]\n", argv[0], argv[0]);
exit(EXIT_FAILURE);
}
+ newargv[nargs++] = uidstr;
+ newargv[nargs++] = gidstr;
+ newargv[nargs++] = NULL;
+
+ assert(nargs <= (sizeof(newargv)/sizeof(newargv[0])));
if (term &&
asprintf(&(newenv[0]), "TERM=%s", term) < 0) {
--
2.21.0
2
1
There's been a bunch of reports of VM startup failures on Fedora 31
and elsewhere:
https://bugzilla.redhat.com/show_bug.cgi?id=1751120
The reproducer I found is running a mock build, which adds a
name=systemd cgroup to /proc/self/cgroup, which messes up libvirt's
logic. The first patch has a bit more detail.
I'm not positive this is entirely correct... maybe we should be doing
something with that cgroup in some way? I'm kinda ignorant here.
I also filed a systemd bug incase that behavior is unintentional. We
probably want to change libvirt regardless though
https://bugzilla.redhat.com/show_bug.cgi?id=1756143
Cole Robinson (2):
vircgroupv2: Fix VM startup when legacy cgroups are defined
vircgroup: Add some VIR_DEBUG statements
src/util/vircgroup.c | 3 ++-
src/util/vircgroupv2.c | 15 ++++++++++++++-
2 files changed, 16 insertions(+), 2 deletions(-)
--
2.23.0
2
5
[libvirt] [PATCH v2 0/7] qemu: checkpoints: Collect most code in a single place
by Peter Krempa 27 Sep '19
by Peter Krempa 27 Sep '19
27 Sep '19
The checkpoint code is quite complex and was dispersed in many places.
Refactor it to be in one new separate file.
I also plan to do the same to the snapshot code once this is dealt with.
Additionally aggregating all the code in one place will allow
refactoring and reuse in the incremental backup implementation.
diff to v1:
- rebased on top of the patches to remove checking of AUTODESTROY
- kept only one instance of virCheckFlags per API (inside qemu_checkpoint.c)
Peter Krempa (7):
qemu: Move, rename and export qemuDomObjFromDomain
conf: Drop pointless 'domain' argument from
virDomainCheckpointRedefinePrep
conf: Drop pointless 'domain' argument from
virDomainSnapshotRedefinePrep
qemu: driver: Remove misplaced qemuDomainObjEndJob in
qemuDomainCheckpointGetXMLDesc
qemu: driver: Move checkpoint-related code to qemu_checkpoint.c
qemu: domain: Move checkpoint related code to qemu_checkpoint.c
qemu: driver: Don't pull in qemu_monitor_json.h directly
src/conf/checkpoint_conf.c | 7 +-
src/conf/checkpoint_conf.h | 3 +-
src/conf/snapshot_conf.c | 5 +-
src/conf/snapshot_conf.h | 3 +-
src/qemu/Makefile.inc.am | 2 +
src/qemu/qemu_checkpoint.c | 646 ++++++++++++++++++++++++++++++++++
src/qemu/qemu_checkpoint.h | 55 +++
src/qemu/qemu_domain.c | 193 ++---------
src/qemu/qemu_domain.h | 16 +-
src/qemu/qemu_driver.c | 689 ++++++++-----------------------------
src/test/test_driver.c | 4 +-
11 files changed, 887 insertions(+), 736 deletions(-)
create mode 100644 src/qemu/qemu_checkpoint.c
create mode 100644 src/qemu/qemu_checkpoint.h
--
2.21.0
3
16
27 Sep '19
See patch 6/8 for the reasoning.
This series applies on top of the v2 of splitting checkpoints into a
separate file.
Peter Krempa (8):
qemu: checkpoint: Refactor cleanup in qemuCheckpointCreateXML
qemu: checkpoint: Remove open-ended TODOs
qemu: Simplify argument list of qemuDomainBlockPullCommon
qemu: Don't repeat virDomainObjEndAPI in qemuDomainBlockPull
qemu: caps: Add capability for incremental backup support
qemu: checkpoint: Forbid creating checkpoints until we support backups
qemu: Aggregate interlocking of blockjobs by checkpoints in one place
qemu: domain: Base block job interlocking on
QEMU_CAPS_INCREMENTAL_BACKUP
src/qemu/qemu_capabilities.c | 3 +++
src/qemu/qemu_capabilities.h | 3 +++
src/qemu/qemu_checkpoint.c | 42 +++++++++++++-----------------
src/qemu/qemu_domain.c | 24 +++++++++++++++++
src/qemu/qemu_domain.h | 4 +++
src/qemu/qemu_driver.c | 50 +++++++++++++-----------------------
6 files changed, 70 insertions(+), 56 deletions(-)
--
2.21.0
2
15
[libvirt] [PATCH] remote: fix systemd IP socket activation with virtproxyd
by Daniel P. Berrangé 27 Sep '19
by Daniel P. Berrangé 27 Sep '19
27 Sep '19
We recently forbid the use of --listen with socket activation:
commit 3a6a725b8f575890ee6c151ad1f46ea0ceea1f3b
Author: Daniel P. Berrangé <berrange(a)redhat.com>
Date: Thu Aug 22 14:52:16 2019 +0100
remote: forbid the --listen arg when systemd socket activation
In this change we forgot that virtproxyd doesn't have a --listen
parameter, and instead behaves as if it was always present. Thus
when systemd socket activation is present, we must disable this
built-in default
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
src/remote/remote_daemon.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/remote/remote_daemon.c b/src/remote/remote_daemon.c
index 7195ac9218..43409edd24 100644
--- a/src/remote/remote_daemon.c
+++ b/src/remote/remote_daemon.c
@@ -423,11 +423,20 @@ daemonSetupNetworking(virNetServerPtr srv,
return -1;
#ifdef WITH_IP
+# ifdef (LIBVIRTD
if (act && ipsock) {
VIR_ERROR(_("--listen parameter not permitted with systemd activation "
"sockets, see 'man libvirtd' for further guidance"));
return -1;
}
+# else /* ! LIBVIRTD */
+ /* We don't have a --listen arg with virtproxyd, we're just
+ * hardcoded to assume --listen. Thus with systemd we must
+ * change that default
+ */
+ if (act)
+ ipsock = 0;
+# endif /* ! LIBVIRTD */
#endif /* ! WITH_IP */
if (config->unix_sock_group) {
--
2.21.0
2
5
[libvirt] [PATCH] qemu_monitor: s/size_t/ULL/ in qemuMonitorSave{Virtual, Physical}Memory
by Michal Privoznik 27 Sep '19
by Michal Privoznik 27 Sep '19
27 Sep '19
As it turns out, on my 32bit ARM machine size_t is not the same
size as ULL. However, @length argument for both functions is type
of size_t but it's treated as ULL - for instance when passed to
qemuMonitorJSONMakeCommand(). The problem is that because of
"U:size" the virJSONValueObjectAddVArgs() expects an ULL argument
but on the stack there are size_t and char * arguments (which
coincidentally add up to size of ULL). So the created command has
only two arguments "val" and incorrect "size" and no "path" which
is required.
I've tried to find other occurrences of this pattern but at the
rest of places where size_t is used it tracks size of an array so
that's safe.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/qemu/qemu_monitor.c | 8 ++++----
src/qemu/qemu_monitor.h | 4 ++--
src/qemu/qemu_monitor_json.c | 6 +++---
src/qemu/qemu_monitor_json.h | 4 ++--
4 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index b6d2936872..7959933e7c 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -2348,10 +2348,10 @@ qemuMonitorChangeMedia(qemuMonitorPtr mon,
int
qemuMonitorSaveVirtualMemory(qemuMonitorPtr mon,
unsigned long long offset,
- size_t length,
+ unsigned long long length,
const char *path)
{
- VIR_DEBUG("offset=%llu length=%zu path=%s", offset, length, path);
+ VIR_DEBUG("offset=%llu length=%llu path=%s", offset, length, path);
QEMU_CHECK_MONITOR(mon);
@@ -2362,10 +2362,10 @@ qemuMonitorSaveVirtualMemory(qemuMonitorPtr mon,
int
qemuMonitorSavePhysicalMemory(qemuMonitorPtr mon,
unsigned long long offset,
- size_t length,
+ unsigned long long length,
const char *path)
{
- VIR_DEBUG("offset=%llu length=%zu path=%s", offset, length, path);
+ VIR_DEBUG("offset=%llu length=%llu path=%s", offset, length, path);
QEMU_CHECK_MONITOR(mon);
diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
index 8fc11c955e..95de891150 100644
--- a/src/qemu/qemu_monitor.h
+++ b/src/qemu/qemu_monitor.h
@@ -726,11 +726,11 @@ int qemuMonitorChangeMedia(qemuMonitorPtr mon,
int qemuMonitorSaveVirtualMemory(qemuMonitorPtr mon,
unsigned long long offset,
- size_t length,
+ unsigned long long length,
const char *path);
int qemuMonitorSavePhysicalMemory(qemuMonitorPtr mon,
unsigned long long offset,
- size_t length,
+ unsigned long long length,
const char *path);
int qemuMonitorSetMigrationSpeed(qemuMonitorPtr mon,
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index cdfaf9785a..d99d291d89 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -3100,7 +3100,7 @@ int qemuMonitorJSONChangeMedia(qemuMonitorPtr mon,
static int qemuMonitorJSONSaveMemory(qemuMonitorPtr mon,
const char *cmdtype,
unsigned long long offset,
- size_t length,
+ unsigned long long length,
const char *path)
{
int ret = -1;
@@ -3129,7 +3129,7 @@ static int qemuMonitorJSONSaveMemory(qemuMonitorPtr mon,
int qemuMonitorJSONSaveVirtualMemory(qemuMonitorPtr mon,
unsigned long long offset,
- size_t length,
+ unsigned long long length,
const char *path)
{
return qemuMonitorJSONSaveMemory(mon, "memsave", offset, length, path);
@@ -3137,7 +3137,7 @@ int qemuMonitorJSONSaveVirtualMemory(qemuMonitorPtr mon,
int qemuMonitorJSONSavePhysicalMemory(qemuMonitorPtr mon,
unsigned long long offset,
- size_t length,
+ unsigned long long length,
const char *path)
{
return qemuMonitorJSONSaveMemory(mon, "pmemsave", offset, length, path);
diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h
index a608410703..63f569716d 100644
--- a/src/qemu/qemu_monitor_json.h
+++ b/src/qemu/qemu_monitor_json.h
@@ -118,11 +118,11 @@ int qemuMonitorJSONChangeMedia(qemuMonitorPtr mon,
int qemuMonitorJSONSaveVirtualMemory(qemuMonitorPtr mon,
unsigned long long offset,
- size_t length,
+ unsigned long long length,
const char *path);
int qemuMonitorJSONSavePhysicalMemory(qemuMonitorPtr mon,
unsigned long long offset,
- size_t length,
+ unsigned long long length,
const char *path);
int qemuMonitorJSONSetMigrationSpeed(qemuMonitorPtr mon,
--
2.21.0
2
1
27 Sep '19
(CCing libvir-list)
On Thu, Sep 26, 2019 at 11:58:30PM +0200, Paolo Bonzini wrote:
> Is this really needed? QEMU's value of pconfig=on vs. off should be
> provided by QMP CPU model queries, if a property is not available then
> Libvirt should not try to set it to off.
>
Libvirt can easily work around it for new VMs, and it should.
The issue are VMs that were created with QEMU 3.1.0. QEMU 3.1.0
was telling libvirt "Icelake-Server can't be used unless
pconfig=off is used", and libvirt was adding pconfig=off to the
domain XML as expected.
It would be wrong for libvirt to remove a device option when
migrating an existing VM to another QEMU version. We can change
the rules (and document that), but do we want to?
> Paolo
>
> Il gio 26 set 2019, 23:23 Eduardo Habkost <ehabkost(a)redhat.com> ha scritto:
>
> > QEMU 3.1.0 was shipped with the "pconfig" CPU property available,
> > added by commit 5131dc433df5 ("i386: Add CPUID bit for PCONFIG").
> >
> > Then the feature was removed in QEMU 4.0.0 (and 3.1.1), by commit
> > 712f807e1965 ("Revert 'i386: Add CPUID bit for PCONFIG'").
> >
> > In theory this would be OK, but we do have a problem: existing
> > software (like libvirt) was already using "pconfig=off" since
> > QEMU 3.1.0 on some cases. This means software that worked with
> > QEMU 3.1.0 doesn't work with QEMU 3.1.1 and newer.
> >
> > One symptom is the following error being generated by
> > virt-install while trying to use the 'host-model' CPU model, on a
> > host that's identified as Icelake-Server:
> >
> > ERROR internal error: qemu unexpectedly closed the monitor: \
> > 2019-09-24T22:57:42.550032Z qemu-kvm: \
> > can't apply global Icelake-Server-x86_64-cpu.pconfig=off: Property
> > '.pconfig' not found
> >
> > Re-add "pconfig" to feature_word_info[FEAT_7_0_EDX].feat_names so
> > "pconfig=off" will work again.
> >
> > This change still won't let users set "monitor=on" because all
> > accelerators currently report the feature as unsupported. But to
> > make sure PCONFIG won't be enabled by accident in the future
> > before we implement the necessary migration code, also add the
> > feature to .unmigratable_flags.
> >
> > Fixes: 712f807e1965 ("Revert 'i386: Add CPUID bit for PCONFIG'")
> > Signed-off-by: Eduardo Habkost <ehabkost(a)redhat.com>
> > ---
> > target/i386/cpu.h | 2 ++
> > target/i386/cpu.c | 8 +++++++-
> > 2 files changed, 9 insertions(+), 1 deletion(-)
> >
> > diff --git a/target/i386/cpu.h b/target/i386/cpu.h
> > index 8e090acd74..b728bd22f1 100644
> > --- a/target/i386/cpu.h
> > +++ b/target/i386/cpu.h
> > @@ -731,6 +731,8 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS];
> > #define CPUID_7_0_EDX_AVX512_4VNNIW (1U << 2)
> > /* AVX512 Multiply Accumulation Single Precision */
> > #define CPUID_7_0_EDX_AVX512_4FMAPS (1U << 3)
> > +/* PCONFIG Instruction */
> > +#define CPUID_7_0_EDX_PCONFIG (1U << 18)
> > /* Speculation Control */
> > #define CPUID_7_0_EDX_SPEC_CTRL (1U << 26)
> > /* Arch Capabilities */
> > diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> > index 71034aeb5a..3e25505bd3 100644
> > --- a/target/i386/cpu.c
> > +++ b/target/i386/cpu.c
> > @@ -1084,7 +1084,7 @@ static FeatureWordInfo
> > feature_word_info[FEATURE_WORDS] = {
> > NULL, NULL, NULL, NULL,
> > NULL, NULL, "md-clear", NULL,
> > NULL, NULL, NULL, NULL,
> > - NULL, NULL, NULL /* pconfig */, NULL,
> > + NULL, NULL, "pconfig", NULL,
> > NULL, NULL, NULL, NULL,
> > NULL, NULL, "spec-ctrl", "stibp",
> > NULL, "arch-capabilities", "core-capability", "ssbd",
> > @@ -1095,6 +1095,12 @@ static FeatureWordInfo
> > feature_word_info[FEATURE_WORDS] = {
> > .reg = R_EDX,
> > },
> > .tcg_features = TCG_7_0_EDX_FEATURES,
> > + /*
> > + * CPU state altered by the PCONFIG instruction (e.g. MKTME key
> > table)
> > + * is not migrated by QEMU yet, so PCONFIG is unmigratable until
> > + * this is implemented.
> > + */
> > + .unmigratable_flags = CPUID_7_0_EDX_PCONFIG,
> > },
> > [FEAT_7_1_EAX] = {
> > .type = CPUID_FEATURE_WORD,
> > --
> > 2.21.0
> >
> >
--
Eduardo
2
2
[libvirt] [PATCH v3 00/22] scripts: convert most perl scripts to python
by Daniel P. Berrangé 27 Sep '19
by Daniel P. Berrangé 27 Sep '19
27 Sep '19
This series is an effort to reduce the number of different
languages we use by eliminating most use of perl in favour
of python.
This aligns with fact that the likely future build system
we'll use (meson) is written in python, and that python
is much more commonly used/understood by developers these
days than perl.
With this applied we use perl in a handful of places only:
- src/rpc/gendispatch.pl - this is a horrendously large
script and very hard to understand/follow. A straight
syntax conversion to Python would still leave a hgue
and hard to understand/follow script. It really needs
a clean room rewrite from scratch, with better structure.
- src/rpc/genprotocol.pl - fairly easy to convert, but
might be obsolete depending on approach for rewriting
gendispatch.pl, so ignored for now
- tests/oomtrace.pl - will be purge by the patches that
drop OOM handling anyway
- tools/wireshark/util/genxdrstub.pl - a very large
script, which I haven't got the courage to tackle
yet.
- cfg.mk/maint.mk - many syntax rules involve regexes
which are fed to perl. Decision on what to do
with syntax-check rules punted to another time.
- build-aux/gitlog-to-changelog
- build-aux/useless-if-before-free - Both pulled in
from gnulib. Could be rewritten quite easily if
desired, but given that we aren't maintainers of
them right now, they're ignored as they don't
really impact our developers.
In v3:
- All scripts comply with all flake8 style rules with
exception of
E129 visually indented line with same indent as next logical line
In v2:
- Pulled in patch to hacking file
- Converted many more scripts
- Forced UTF-8 character set to avoid ascii codec
on py3 < 3.7
Daniel P. Berrangé (22):
docs: document that C & Python are the preferred languages
build-aux: rewrite augest test generator in Python
build-aux: rewrite po file minimizer in Python
build-aux: rewrite duplicate header checker in Python
build-aux: rewrite whitespace checker in Python
build-aux: rewrite mock inline checker in Python
build-aux: rewrite header ifdef checker in Python
src: rewrite ACL permissions checker in Python
src: rewrite symfile sorting checker in Python
src: rewrite symfile library checker in Python
src: rewrite systemtap probe generator in Python
src: rewrite systemtap function generator in Python
src: rewrite driver name checker in Python
src: rewrite driver impl checker in Python
src: rewrite ACL rule checker in Python
src: rewrite polkit ACL generator in Python
src: rewrite remote protocol checker in Python
tests: rewrite test argv line wrapper in Python
tests: rewrite qemu capability grouper in Python
tests: rewrite file access checker in Python
docs: rewrite hvsupport.html page generator in python
docs: rewrite polkit docs generator in Python
Makefile.am | 12 +-
build-aux/augeas-gentest.pl | 60 ---
build-aux/augeas-gentest.py | 72 ++++
build-aux/check-spacing.pl | 198 ----------
build-aux/check-spacing.py | 229 +++++++++++
build-aux/header-ifdef.pl | 182 ---------
build-aux/header-ifdef.py | 231 +++++++++++
build-aux/minimize-po.pl | 37 --
build-aux/minimize-po.py | 60 +++
build-aux/mock-noinline.pl | 75 ----
build-aux/mock-noinline.py | 89 +++++
build-aux/prohibit-duplicate-header.pl | 26 --
build-aux/prohibit-duplicate-header.py | 57 +++
cfg.mk | 30 +-
docs/Makefile.am | 14 +-
docs/genaclperms.pl | 125 ------
docs/genaclperms.py | 123 ++++++
docs/hacking.html.in | 30 ++
docs/hvsupport.pl | 458 ----------------------
docs/hvsupport.py | 516 +++++++++++++++++++++++++
po/Makefile.am | 2 +-
src/Makefile.am | 156 +++-----
src/access/Makefile.inc.am | 7 +-
src/access/genpolkit.pl | 119 ------
src/access/genpolkit.py | 122 ++++++
src/bhyve/Makefile.inc.am | 4 +-
src/check-aclperms.pl | 73 ----
src/check-aclperms.py | 78 ++++
src/check-aclrules.pl | 252 ------------
src/check-aclrules.py | 263 +++++++++++++
src/check-driverimpls.pl | 80 ----
src/check-driverimpls.py | 102 +++++
src/check-drivername.pl | 83 ----
src/check-drivername.py | 114 ++++++
src/check-remote-protocol.py | 137 +++++++
src/check-symfile.pl | 70 ----
src/check-symfile.py | 81 ++++
src/check-symsorting.pl | 106 -----
src/check-symsorting.py | 119 ++++++
src/dtrace2systemtap.pl | 130 -------
src/dtrace2systemtap.py | 143 +++++++
src/interface/Makefile.inc.am | 2 +-
src/libxl/Makefile.inc.am | 4 +-
src/locking/Makefile.inc.am | 6 +-
src/logging/Makefile.inc.am | 2 +-
src/lxc/Makefile.inc.am | 4 +-
src/network/Makefile.inc.am | 2 +-
src/node_device/Makefile.inc.am | 2 +-
src/nwfilter/Makefile.inc.am | 2 +-
src/qemu/Makefile.inc.am | 4 +-
src/remote/Makefile.inc.am | 4 +-
src/rpc/Makefile.inc.am | 2 +-
src/rpc/gensystemtap.pl | 193 ---------
src/rpc/gensystemtap.py | 184 +++++++++
src/secret/Makefile.inc.am | 2 +-
src/storage/Makefile.inc.am | 2 +-
src/vbox/Makefile.inc.am | 2 +-
src/vz/Makefile.inc.am | 2 +-
tests/Makefile.am | 4 +-
tests/check-file-access.pl | 126 ------
tests/check-file-access.py | 123 ++++++
tests/file_access_whitelist.txt | 2 +-
tests/group-qemu-caps.pl | 124 ------
tests/group-qemu-caps.py | 123 ++++++
tests/test-wrap-argv.pl | 174 ---------
tests/test-wrap-argv.py | 170 ++++++++
tests/testutils.c | 16 +-
67 files changed, 3283 insertions(+), 2863 deletions(-)
delete mode 100755 build-aux/augeas-gentest.pl
create mode 100755 build-aux/augeas-gentest.py
delete mode 100755 build-aux/check-spacing.pl
create mode 100755 build-aux/check-spacing.py
delete mode 100644 build-aux/header-ifdef.pl
create mode 100644 build-aux/header-ifdef.py
delete mode 100755 build-aux/minimize-po.pl
create mode 100755 build-aux/minimize-po.py
delete mode 100644 build-aux/mock-noinline.pl
create mode 100644 build-aux/mock-noinline.py
delete mode 100644 build-aux/prohibit-duplicate-header.pl
create mode 100644 build-aux/prohibit-duplicate-header.py
delete mode 100755 docs/genaclperms.pl
create mode 100755 docs/genaclperms.py
delete mode 100755 docs/hvsupport.pl
create mode 100755 docs/hvsupport.py
delete mode 100755 src/access/genpolkit.pl
create mode 100755 src/access/genpolkit.py
delete mode 100755 src/check-aclperms.pl
create mode 100755 src/check-aclperms.py
delete mode 100755 src/check-aclrules.pl
create mode 100755 src/check-aclrules.py
delete mode 100755 src/check-driverimpls.pl
create mode 100755 src/check-driverimpls.py
delete mode 100755 src/check-drivername.pl
create mode 100644 src/check-drivername.py
create mode 100644 src/check-remote-protocol.py
delete mode 100755 src/check-symfile.pl
create mode 100755 src/check-symfile.py
delete mode 100755 src/check-symsorting.pl
create mode 100755 src/check-symsorting.py
delete mode 100755 src/dtrace2systemtap.pl
create mode 100755 src/dtrace2systemtap.py
delete mode 100755 src/rpc/gensystemtap.pl
create mode 100755 src/rpc/gensystemtap.py
delete mode 100755 tests/check-file-access.pl
create mode 100755 tests/check-file-access.py
delete mode 100755 tests/group-qemu-caps.pl
create mode 100755 tests/group-qemu-caps.py
delete mode 100755 tests/test-wrap-argv.pl
create mode 100755 tests/test-wrap-argv.py
--
2.21.0
6
46
[libvirt] [PATCH 00/11] build: work in progress illustration of meson conversion
by Daniel P. Berrangé 27 Sep '19
by Daniel P. Berrangé 27 Sep '19
27 Sep '19
For the past week or to I've been tackling the problem of converting
from autotools to meson.
Many of the virt related projects have gone through this already, but
libvirt is a bit of a special case because it is so huge. In particular
I don't think it is acceptable to do a big bang where the entire of
meson support is in one commit and then entire of autotools support
is deleted in the next commit. While this was OK for smaller projects,
it is impossible to sensibly review for something as large as libvirt.
Obviously this series is faaaar from complete as it hasn't tried to
convert anything in the src/ dir where most of our cruft is.
It is also not tested on anything other than my Fedora 30 system so
don't expect perfection here.
Daniel P. Berrangé (11):
build: mandate use of a build dir != src dir
build: drop support for python2, requiring python3 only
build: introduce bare minimum use of meson as a build system
build: declare deps for libraries built by autotools
build: use meson for building the example programs
build: use meson for installing example program src / data
build: use meson for building NSS modules
build: add command line options for enabling each driver
build: use meson for building virt-host-validate
build: use meson for building virt-login-shell
build: use meson for building virsh / virt-admin
Makefile.am | 2 +-
build-aux/dist.py | 133 ++++++++++++
configure.ac | 13 +-
docs/apibuild.py | 4 +-
docs/reformat-news.py | 4 +-
examples/Makefile.am | 135 ------------
examples/c/admin/meson.build | 59 ++++++
examples/c/domain/meson.build | 43 ++++
examples/c/meson.build | 4 +
examples/c/misc/meson.build | 27 +++
examples/meson.build | 6 +
examples/polkit/meson.build | 5 +
examples/sh/meson.build | 5 +
examples/systemtap/meson.build | 8 +
examples/xml/meson.build | 3 +
examples/xml/storage/meson.build | 14 ++
examples/xml/test/meson.build | 13 ++
libvirt.spec.in | 47 ++---
m4/virt-bash-completion.m4 | 70 -------
m4/virt-host-validate.m4 | 43 ----
m4/virt-login-shell.m4 | 43 ----
meson.build | 54 +++++
meson_options.txt | 27 +++
src/bhyve/meson.build | 5 +
src/esx/esx_vi_generator.py | 4 +-
src/esx/meson.build | 2 +
src/hyperv/hyperv_wmi_generator.py | 4 +-
src/hyperv/meson.build | 2 +
src/interface/meson.build | 5 +
src/libxl/meson.build | 5 +
src/lxc/meson.build | 5 +
src/meson.build | 61 ++++++
src/network/meson.build | 5 +
src/node_device/meson.build | 5 +
src/nwfilter/meson.build | 5 +
src/openvz/meson.build | 2 +
src/phyp/meson.build | 2 +
src/qemu/meson.build | 5 +
src/remote/meson.build | 6 +
src/secret/meson.build | 5 +
src/storage/meson.build | 5 +
src/test/meson.build | 2 +
src/vbox/meson.build | 2 +
src/vmware/meson.build | 2 +
src/vz/meson.build | 5 +
tests/cputestdata/cpu-gather.sh | 9 +-
tools/Makefile.am | 318 +----------------------------
tools/bash-completion/meson.build | 19 ++
tools/meson.build | 252 +++++++++++++++++++++++
tools/nss/meson.build | 63 ++++++
50 files changed, 909 insertions(+), 658 deletions(-)
create mode 100755 build-aux/dist.py
delete mode 100644 examples/Makefile.am
create mode 100644 examples/c/admin/meson.build
create mode 100644 examples/c/domain/meson.build
create mode 100644 examples/c/meson.build
create mode 100644 examples/c/misc/meson.build
create mode 100644 examples/meson.build
create mode 100644 examples/polkit/meson.build
create mode 100644 examples/sh/meson.build
create mode 100644 examples/systemtap/meson.build
create mode 100644 examples/xml/meson.build
create mode 100644 examples/xml/storage/meson.build
create mode 100644 examples/xml/test/meson.build
delete mode 100644 m4/virt-bash-completion.m4
delete mode 100644 m4/virt-host-validate.m4
delete mode 100644 m4/virt-login-shell.m4
create mode 100644 meson.build
create mode 100644 meson_options.txt
create mode 100644 src/bhyve/meson.build
create mode 100644 src/esx/meson.build
create mode 100644 src/hyperv/meson.build
create mode 100644 src/interface/meson.build
create mode 100644 src/libxl/meson.build
create mode 100644 src/lxc/meson.build
create mode 100644 src/meson.build
create mode 100644 src/network/meson.build
create mode 100644 src/node_device/meson.build
create mode 100644 src/nwfilter/meson.build
create mode 100644 src/openvz/meson.build
create mode 100644 src/phyp/meson.build
create mode 100644 src/qemu/meson.build
create mode 100644 src/remote/meson.build
create mode 100644 src/secret/meson.build
create mode 100644 src/storage/meson.build
create mode 100644 src/test/meson.build
create mode 100644 src/vbox/meson.build
create mode 100644 src/vmware/meson.build
create mode 100644 src/vz/meson.build
create mode 100644 tools/bash-completion/meson.build
create mode 100644 tools/meson.build
create mode 100644 tools/nss/meson.build
--
2.21.0
1
11
27 Sep '19
I am messing a lot with qemu_driver.c and other QEMU files due
to a multifunction PCI feature I'm working on, ending up
sometimes moving code here and there, sometimes copy and
pasting parts of it, and spreading all these 'vices', namely
using char* and VIR_FREE() and virQEMUDriverConfigPtr with
virObjectUnref(), knowing that there is a better way of doing
it.
Instead of changing just the code I was working on, I took
a leap and ended up changing the whole qemu_driver.c file.
So here it is.
The changes were split to make it reviewing a bit saner. The
commiter can squash these in fewer patches if desirable.
This was done on top of master commit bc1e4389f5.
Daniel Henrique Barboza (6):
qemu_driver: use VIR_AUTOUNREF() with virQEMUDriverConfigPtr 1/3
qemu_driver: use VIR_AUTOUNREF() with virQEMUDriverConfigPtr 2/3
qemu_driver: use VIR_AUTOUNREF() with virQEMUDriverConfigPtr 3/3
qemu_driver: use VIR_AUTOFREE() with strings 1/3
qemu_driver: use VIR_AUTOFREE() with strings 2/3
qemu_driver: use VIR_AUTOFREE() with strings 3/3
src/qemu/qemu_driver.c | 519 ++++++++++++++---------------------------
1 file changed, 170 insertions(+), 349 deletions(-)
--
2.21.0
2
12
[libvirt] [PATCH] tests: qemucapabilities: Update caps of qemu-4.1 to released version
by Peter Krempa 27 Sep '19
by Peter Krempa 27 Sep '19
27 Sep '19
Now that qemu 4.1 was released we can update the capabilities to the
final form.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
.../caps_4.1.0.x86_64.replies | 5663 +++++++++++------
.../caps_4.1.0.x86_64.xml | 746 ++-
2 files changed, 4507 insertions(+), 1902 deletions(-)
diff --git a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.replies
index 516e7139bd..68cae3d599 100644
--- a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.replies
@@ -17,11 +17,11 @@
{
"return": {
"qemu": {
- "micro": 50,
- "minor": 0,
+ "micro": 0,
+ "minor": 1,
"major": 4
},
- "package": "v4.0.0-1481-g33d6099906"
+ "package": "v4.1.0"
},
"id": "libvirt-2"
}
@@ -54,12 +54,6 @@
{
"name": "query-qmp-schema"
},
- {
- "name": "query-cpu-definitions"
- },
- {
- "name": "query-cpu-model-expansion"
- },
{
"name": "query-sev-capabilities"
},
@@ -72,15 +66,9 @@
{
"name": "rtc-reset-reinjection"
},
- {
- "name": "set-numa-node"
- },
{
"name": "query-vm-generation-id"
},
- {
- "name": "query-hotpluggable-cpus"
- },
{
"name": "xen-load-devices-state"
},
@@ -90,9 +78,6 @@
{
"name": "query-memory-devices"
},
- {
- "name": "query-memdev"
- },
{
"name": "query-command-line-options"
},
@@ -112,106 +97,109 @@
"name": "query-memory-size-summary"
},
{
- "name": "query-current-machine"
+ "name": "closefd"
},
{
- "name": "query-machines"
+ "name": "getfd"
},
{
- "name": "closefd"
+ "name": "xen-set-global-dirty-log"
},
{
- "name": "getfd"
+ "name": "change"
},
{
- "name": "object-del"
+ "name": "human-monitor-command"
},
{
- "name": "object-add"
+ "name": "balloon"
},
{
- "name": "query-dump-guest-memory-capability"
+ "name": "inject-nmi"
},
{
- "name": "query-dump"
+ "name": "system_wakeup"
},
{
- "name": "dump-guest-memory"
+ "name": "x-exit-preconfig"
},
{
- "name": "device_del"
+ "name": "cont"
},
{
- "name": "xen-set-global-dirty-log"
+ "name": "pmemsave"
},
{
- "name": "qom-list-properties"
+ "name": "memsave"
},
{
- "name": "device-list-properties"
+ "name": "system_powerdown"
},
{
- "name": "qom-list-types"
+ "name": "system_reset"
},
{
- "name": "change"
+ "name": "stop"
},
{
- "name": "qom-set"
+ "name": "quit"
},
{
- "name": "qom-get"
+ "name": "query-pci"
},
{
- "name": "qom-list"
+ "name": "query-balloon"
},
{
- "name": "human-monitor-command"
+ "name": "query-iothreads"
},
{
- "name": "balloon"
+ "name": "query-events"
},
{
- "name": "inject-nmi"
+ "name": "query-uuid"
},
{
- "name": "system_wakeup"
+ "name": "query-kvm"
},
{
- "name": "x-exit-preconfig"
+ "name": "query-name"
},
{
- "name": "cont"
+ "name": "add_client"
},
{
- "name": "pmemsave"
+ "name": "query-commands"
},
{
- "name": "memsave"
+ "name": "query-version"
},
{
- "name": "cpu-add"
+ "name": "qmp_capabilities"
},
{
- "name": "system_powerdown"
+ "name": "query-cpu-definitions"
},
{
- "name": "system_reset"
+ "name": "query-cpu-model-expansion"
},
{
- "name": "stop"
+ "name": "set-numa-node"
},
{
- "name": "quit"
+ "name": "query-hotpluggable-cpus"
},
{
- "name": "query-pci"
+ "name": "query-memdev"
},
{
- "name": "query-balloon"
+ "name": "query-current-machine"
},
{
- "name": "query-iothreads"
+ "name": "query-machines"
+ },
+ {
+ "name": "cpu-add"
},
{
"name": "query-cpus-fast"
@@ -220,28 +208,31 @@
"name": "query-cpus"
},
{
- "name": "query-events"
+ "name": "device_del"
},
{
- "name": "query-uuid"
+ "name": "device-list-properties"
},
{
- "name": "query-kvm"
+ "name": "object-del"
},
{
- "name": "query-name"
+ "name": "object-add"
},
{
- "name": "add_client"
+ "name": "qom-list-properties"
},
{
- "name": "query-commands"
+ "name": "qom-list-types"
},
{
- "name": "query-version"
+ "name": "qom-set"
},
{
- "name": "qmp_capabilities"
+ "name": "qom-get"
+ },
+ {
+ "name": "qom-list"
},
{
"name": "trace-event-set-state"
@@ -387,6 +378,15 @@
{
"name": "set_link"
},
+ {
+ "name": "query-dump-guest-memory-capability"
+ },
+ {
+ "name": "query-dump"
+ },
+ {
+ "name": "dump-guest-memory"
+ },
{
"name": "chardev-send-break"
},
@@ -638,33 +638,41 @@
"name": "floppy-bus",
"parent": "bus"
},
- {
- "name": "chardev-stdio",
- "parent": "chardev-fd"
- },
{
"name": "chardev-testdev",
"parent": "chardev"
},
+ {
+ "name": "usb-redir",
+ "parent": "usb-device"
+ },
+ {
+ "name": "vhost-user-input-pci",
+ "parent": "vhost-user-input-pci-base-type"
+ },
{
"name": "virtio-rng-device",
"parent": "virtio-device"
},
{
- "name": "sev-guest",
- "parent": "object"
+ "name": "chardev-stdio",
+ "parent": "chardev-fd"
},
{
- "name": "usb-redir",
+ "name": "usb-wacom-tablet",
"parent": "usb-device"
},
+ {
+ "name": "ich9-usb-uhci5",
+ "parent": "pci-uhci-usb"
+ },
{
"name": "filter-buffer",
"parent": "netfilter"
},
{
- "name": "usb-wacom-tablet",
- "parent": "usb-device"
+ "name": "Icelake-Server-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
"name": "ich9-usb-uhci6",
@@ -679,16 +687,16 @@
"parent": "pit-common"
},
{
- "name": "vhost-user-input-pci",
- "parent": "virtio-input-pci"
+ "name": "Haswell-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
"name": "rtl8139",
"parent": "pci-device"
},
{
- "name": "ich9-usb-uhci5",
- "parent": "pci-uhci-usb"
+ "name": "core2duo-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
"name": "pci-bridge",
@@ -699,16 +707,16 @@
"parent": "generic-pc-machine"
},
{
- "name": "pcm3680_pci",
- "parent": "pci-device"
+ "name": "sev-guest",
+ "parent": "object"
},
{
"name": "virtio-crypto-device",
"parent": "virtio-device"
},
{
- "name": "core2duo-x86_64-cpu",
- "parent": "x86_64-cpu"
+ "name": "pcm3680_pci",
+ "parent": "pci-device"
},
{
"name": "virtio-blk-pci-transitional",
@@ -734,14 +742,14 @@
"name": "kvm-ioapic",
"parent": "ioapic-common"
},
- {
- "name": "gus",
- "parent": "isa-device"
- },
{
"name": "ich9-usb-uhci4",
"parent": "pci-uhci-usb"
},
+ {
+ "name": "gus",
+ "parent": "isa-device"
+ },
{
"name": "usb-hub",
"parent": "usb-device"
@@ -762,6 +770,14 @@
"name": "chardev-wctablet",
"parent": "chardev"
},
+ {
+ "name": "Westmere-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Opteron_G5-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "ich9-usb-uhci2",
"parent": "pci-uhci-usb"
@@ -834,6 +850,10 @@
"name": "tpm-passthrough",
"parent": "tpm-backend"
},
+ {
+ "name": "pentium3-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "virtio-serial-bus",
"parent": "bus"
@@ -858,33 +878,33 @@
"name": "pc-1.2-machine",
"parent": "generic-pc-machine"
},
- {
- "name": "isa-ipmi-bt",
- "parent": "isa-device"
- },
{
"name": "vhost-scsi-pci",
"parent": "vhost-scsi-pci-base"
},
+ {
+ "name": "isa-ipmi-bt",
+ "parent": "isa-device"
+ },
{
"name": "virtio-gpu-pci",
- "parent": "virtio-gpu-pci-base"
+ "parent": "virtio-gpu-pci-base-type"
},
{
- "name": "xio3130-downstream",
- "parent": "pcie-slot"
+ "name": "imx-usdhc",
+ "parent": "generic-sdhci"
},
{
"name": "intel-iommu-iommu-memory-region",
"parent": "qemu:iommu-memory-region"
},
{
- "name": "pc-i440fx-2.3-machine",
- "parent": "generic-pc-machine"
+ "name": "xio3130-downstream",
+ "parent": "pcie-slot"
},
{
- "name": "ICH9-LPC",
- "parent": "pci-device"
+ "name": "pc-i440fx-2.3-machine",
+ "parent": "generic-pc-machine"
},
{
"name": "PCI",
@@ -895,8 +915,8 @@
"parent": "sd-bus"
},
{
- "name": "imx-usdhc",
- "parent": "generic-sdhci"
+ "name": "ICH9-LPC",
+ "parent": "pci-device"
},
{
"name": "pci-serial-2x",
@@ -906,6 +926,10 @@
"name": "igd-passthrough-isa-bridge",
"parent": "pci-device"
},
+ {
+ "name": "ich9-usb-ehci2",
+ "parent": "pci-ehci-usb"
+ },
{
"name": "virtio-9p-device",
"parent": "virtio-device"
@@ -935,8 +959,8 @@
"parent": "x86_64-cpu"
},
{
- "name": "ich9-usb-ehci2",
- "parent": "pci-ehci-usb"
+ "name": "Skylake-Client-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
"name": "usb-net",
@@ -967,12 +991,12 @@
"parent": "pci-ehci-usb"
},
{
- "name": "virtio-input-host-pci",
- "parent": "virtio-input-pci"
+ "name": "pc-q35-3.0-machine",
+ "parent": "generic-pc-machine"
},
{
- "name": "mch",
- "parent": "pci-device"
+ "name": "virtio-input-host-pci",
+ "parent": "virtio-input-host-pci-base-type"
},
{
"name": "chardev-hci",
@@ -983,8 +1007,8 @@
"parent": "pc-dimm"
},
{
- "name": "pc-q35-3.0-machine",
- "parent": "generic-pc-machine"
+ "name": "mch",
+ "parent": "pci-device"
},
{
"name": "virtio-9p-pci-transitional",
@@ -1031,16 +1055,20 @@
"parent": "device"
},
{
- "name": "pc-q35-2.8-machine",
- "parent": "generic-pc-machine"
+ "name": "generic-sdhci",
+ "parent": "sys-bus-device"
},
{
"name": "vhost-user-scsi-pci-non-transitional",
"parent": "vhost-user-scsi-pci-base"
},
{
- "name": "generic-sdhci",
- "parent": "sys-bus-device"
+ "name": "vmmouse",
+ "parent": "isa-device"
+ },
+ {
+ "name": "pc-q35-2.8-machine",
+ "parent": "generic-pc-machine"
},
{
"name": "i82557a",
@@ -1055,24 +1083,28 @@
"parent": "virtio-scsi-pci-base"
},
{
- "name": "vmmouse",
- "parent": "isa-device"
+ "name": "Haswell-v3-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
"name": "athlon-x86_64-cpu",
"parent": "x86_64-cpu"
},
+ {
+ "name": "chardev-memory",
+ "parent": "chardev-ringbuf"
+ },
{
"name": "chardev-udp",
"parent": "chardev"
},
{
"name": "virtio-mouse-pci",
- "parent": "virtio-input-hid-pci"
+ "parent": "virtio-mouse-pci-base-type"
},
{
- "name": "chardev-memory",
- "parent": "chardev-ringbuf"
+ "name": "usb-tablet",
+ "parent": "usb-hid"
},
{
"name": "pc-i440fx-1.6-machine",
@@ -1080,7 +1112,15 @@
},
{
"name": "vhost-user-vga",
- "parent": "virtio-vga-base"
+ "parent": "vhost-user-vga-base-type"
+ },
+ {
+ "name": "Opteron_G2-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Broadwell-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
"name": "usb-braille",
@@ -1098,6 +1138,10 @@
"name": "amd-iommu",
"parent": "x86-iommu"
},
+ {
+ "name": "Nehalem-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "virtio-9p-pci-non-transitional",
"parent": "virtio-9p-pci-base"
@@ -1123,8 +1167,8 @@
"parent": "device"
},
{
- "name": "pc-q35-4.0.1-machine",
- "parent": "generic-pc-machine"
+ "name": "isabus-bridge",
+ "parent": "sys-bus-device"
},
{
"name": "sysbus-ahci",
@@ -1135,20 +1179,20 @@
"parent": "vhost-scsi-common"
},
{
- "name": "usb-tablet",
- "parent": "usb-hid"
- },
- {
- "name": "virtio-blk-pci-non-transitional",
- "parent": "virtio-blk-pci-base"
+ "name": "pc-q35-4.0.1-machine",
+ "parent": "generic-pc-machine"
},
{
"name": "esp",
"parent": "sys-bus-device"
},
{
- "name": "isabus-bridge",
- "parent": "sys-bus-device"
+ "name": "virtio-blk-pci-non-transitional",
+ "parent": "virtio-blk-pci-base"
+ },
+ {
+ "name": "IvyBridge-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
"name": "ne2k_pci",
@@ -1166,6 +1210,10 @@
"name": "tcg-accel",
"parent": "accel"
},
+ {
+ "name": "virtio-gpu-device",
+ "parent": "virtio-gpu-base"
+ },
{
"name": "virtio-balloon-pci",
"parent": "virtio-balloon-pci-base"
@@ -1174,17 +1222,17 @@
"name": "qemu:memory-region",
"parent": "object"
},
- {
- "name": "virtio-gpu-device",
- "parent": "virtio-gpu-base"
- },
{
"name": "e1000",
"parent": "e1000-base"
},
{
- "name": "ES1370",
- "parent": "pci-device"
+ "name": "Cascadelake-Server-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "athlon-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
"name": "pc-i440fx-2.6-machine",
@@ -1198,6 +1246,10 @@
"name": "isa-ipmi-kcs",
"parent": "isa-device"
},
+ {
+ "name": "EPYC-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "nvme",
"parent": "pci-device"
@@ -1207,7 +1259,7 @@
"parent": "x86_64-cpu"
},
{
- "name": "vmxnet3",
+ "name": "i82550",
"parent": "pci-device"
},
{
@@ -1223,24 +1275,36 @@
"parent": "pci-device"
},
{
- "name": "i82550",
+ "name": "vmxnet3",
"parent": "pci-device"
},
{
"name": "nec-usb-xhci",
"parent": "base-xhci"
},
+ {
+ "name": "ES1370",
+ "parent": "pci-device"
+ },
+ {
+ "name": "Conroe-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "kvm-apic",
"parent": "apic-common"
},
+ {
+ "name": "isa-pit",
+ "parent": "pit-common"
+ },
{
"name": "kvm64-x86_64-cpu",
"parent": "x86_64-cpu"
},
{
- "name": "isa-pit",
- "parent": "pit-common"
+ "name": "Broadwell-v4-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
"name": "memory-backend-memfd",
@@ -1256,11 +1320,11 @@
},
{
"name": "vhost-user-gpu-pci",
- "parent": "virtio-gpu-pci-base"
+ "parent": "vhost-user-gpu-pci-base-type"
},
{
"name": "virtio-crypto-pci",
- "parent": "virtio-pci"
+ "parent": "virtio-crypto-pci-base-type"
},
{
"name": "iothread",
@@ -1270,14 +1334,14 @@
"name": "i8042",
"parent": "isa-device"
},
- {
- "name": "System",
- "parent": "bus"
- },
{
"name": "or-irq",
"parent": "device"
},
+ {
+ "name": "System",
+ "parent": "bus"
+ },
{
"name": "pc-1.0-machine",
"parent": "generic-pc-machine"
@@ -1298,17 +1362,25 @@
"name": "isa-serial",
"parent": "isa-device"
},
+ {
+ "name": "core2duo-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "cirrus-vga",
"parent": "pci-device"
},
+ {
+ "name": "kvm32-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "pc-i440fx-2.1-machine",
"parent": "generic-pc-machine"
},
{
- "name": "virtio-serial-pci",
- "parent": "virtio-serial-pci-base"
+ "name": "Skylake-Client-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
"name": "i82559er",
@@ -1319,21 +1391,21 @@
"parent": "virtio-rng-pci-base"
},
{
- "name": "Skylake-Client-x86_64-cpu",
- "parent": "x86_64-cpu"
+ "name": "virtio-serial-pci",
+ "parent": "virtio-serial-pci-base"
},
{
"name": "Opteron_G3-x86_64-cpu",
"parent": "x86_64-cpu"
},
- {
- "name": "split-irq",
- "parent": "device"
- },
{
"name": "am53c974",
"parent": "pci-device"
},
+ {
+ "name": "split-irq",
+ "parent": "device"
+ },
{
"name": "container",
"parent": "object"
@@ -1342,6 +1414,10 @@
"name": "scsi-cd",
"parent": "scsi-disk-base"
},
+ {
+ "name": "486-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "vmport",
"parent": "isa-device"
@@ -1354,6 +1430,10 @@
"name": "isa-ide",
"parent": "isa-device"
},
+ {
+ "name": "qemu64-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "e1000-82545em",
"parent": "e1000-base"
@@ -1366,14 +1446,14 @@
"name": "ICH9 SMB",
"parent": "pci-device"
},
- {
- "name": "pxb-pcie-bus",
- "parent": "PCIE"
- },
{
"name": "sdhci-pci",
"parent": "pci-device"
},
+ {
+ "name": "pxb-pcie-bus",
+ "parent": "PCIE"
+ },
{
"name": "vhost-user-scsi",
"parent": "vhost-scsi-common"
@@ -1410,6 +1490,10 @@
"name": "i440FX",
"parent": "pci-device"
},
+ {
+ "name": "Penryn-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "vhost-vsock-pci-transitional",
"parent": "vhost-vsock-pci-base"
@@ -1430,17 +1514,17 @@
"name": "pci-serial-4x",
"parent": "pci-device"
},
- {
- "name": "Icelake-Server-x86_64-cpu",
- "parent": "x86_64-cpu"
- },
{
"name": "apic",
"parent": "apic-common"
},
{
- "name": "sga",
- "parent": "isa-device"
+ "name": "Icelake-Server-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "hpet",
+ "parent": "sys-bus-device"
},
{
"name": "Opteron_G5-x86_64-cpu",
@@ -1451,8 +1535,8 @@
"parent": "generic-pc-machine"
},
{
- "name": "hpet",
- "parent": "sys-bus-device"
+ "name": "sga",
+ "parent": "isa-device"
},
{
"name": "pci-ohci",
@@ -1514,6 +1598,10 @@
"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"
@@ -1524,12 +1612,16 @@
},
{
"name": "virtio-keyboard-pci",
- "parent": "virtio-input-hid-pci"
+ "parent": "virtio-keyboard-pci-base-type"
},
{
"name": "pcnet",
"parent": "pci-device"
},
+ {
+ "name": "Dhyana-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "sysbus-fdc",
"parent": "base-sysbus-fdc"
@@ -1542,6 +1634,10 @@
"name": "AMDVI-PCI",
"parent": "pci-device"
},
+ {
+ "name": "filter-redirector",
+ "parent": "netfilter"
+ },
{
"name": "virtserialport",
"parent": "virtio-serial-port"
@@ -1551,8 +1647,8 @@
"parent": "ipack-device"
},
{
- "name": "filter-redirector",
- "parent": "netfilter"
+ "name": "usb-mouse",
+ "parent": "usb-hid"
},
{
"name": "Nehalem-x86_64-cpu",
@@ -1562,10 +1658,6 @@
"name": "i82559b",
"parent": "pci-device"
},
- {
- "name": "usb-mouse",
- "parent": "usb-hid"
- },
{
"name": "ccid-bus",
"parent": "bus"
@@ -1578,10 +1670,6 @@
"name": "Broadwell-x86_64-cpu",
"parent": "x86_64-cpu"
},
- {
- "name": "i82559a",
- "parent": "pci-device"
- },
{
"name": "kvaser_pci",
"parent": "pci-device"
@@ -1590,6 +1678,10 @@
"name": "vhost-user-scsi-pci",
"parent": "vhost-user-scsi-pci-base"
},
+ {
+ "name": "i82559a",
+ "parent": "pci-device"
+ },
{
"name": "pc-i440fx-4.1-machine",
"parent": "generic-pc-machine"
@@ -1598,18 +1690,22 @@
"name": "pc-1.3-machine",
"parent": "generic-pc-machine"
},
- {
- "name": "e1000-82544gc",
- "parent": "e1000-base"
- },
{
"name": "chardev-spiceport",
"parent": "chardev-spice"
},
+ {
+ "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"
@@ -1642,6 +1738,10 @@
"name": "unimplemented-device",
"parent": "sys-bus-device"
},
+ {
+ "name": "Skylake-Server-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "pc-q35-4.1-machine",
"parent": "generic-pc-machine"
@@ -1690,6 +1790,10 @@
"name": "chardev-braille",
"parent": "chardev"
},
+ {
+ "name": "Icelake-Client-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "vmcoreinfo",
"parent": "device"
@@ -1706,6 +1810,14 @@
"name": "qio-channel-file",
"parent": "qio-channel"
},
+ {
+ "name": "gpio_i2c",
+ "parent": "sys-bus-device"
+ },
+ {
+ "name": "coreduo-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "pc-q35-3.1-machine",
"parent": "generic-pc-machine"
@@ -1719,16 +1831,20 @@
"parent": "object"
},
{
- "name": "host-x86_64-cpu",
- "parent": "max-x86_64-cpu"
+ "name": "Haswell-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "pxb",
+ "parent": "pci-device"
},
{
"name": "usb-ehci",
"parent": "pci-ehci-usb"
},
{
- "name": "pxb",
- "parent": "pci-device"
+ "name": "host-x86_64-cpu",
+ "parent": "max-x86_64-cpu"
},
{
"name": "pc-i440fx-2.11-machine",
@@ -1742,6 +1858,14 @@
"name": "vmgenid",
"parent": "device"
},
+ {
+ "name": "input-linux",
+ "parent": "object"
+ },
+ {
+ "name": "secret",
+ "parent": "object"
+ },
{
"name": "virtio-net-pci-non-transitional",
"parent": "virtio-net-pci-base"
@@ -1758,21 +1882,21 @@
"name": "scsi-hd",
"parent": "scsi-disk-base"
},
- {
- "name": "secret",
- "parent": "object"
- },
{
"name": "usb-kbd",
"parent": "usb-hid"
},
+ {
+ "name": "lsi53c810",
+ "parent": "lsi53c895a"
+ },
{
"name": "isa-fdc",
"parent": "isa-device"
},
{
- "name": "input-linux",
- "parent": "object"
+ "name": "filter-mirror",
+ "parent": "netfilter"
},
{
"name": "filter-replay",
@@ -1802,6 +1926,10 @@
"name": "hyperv-testdev",
"parent": "isa-device"
},
+ {
+ "name": "tpm-tis",
+ "parent": "isa-device"
+ },
{
"name": "fw_cfg_mem",
"parent": "fw_cfg"
@@ -1811,12 +1939,12 @@
"parent": "ccid-card"
},
{
- "name": "tpm-tis",
- "parent": "isa-device"
+ "name": "Westmere-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
- "name": "lsi53c810",
- "parent": "lsi53c895a"
+ "name": "virtio-pmem",
+ "parent": "virtio-device"
},
{
"name": "pc-i440fx-1.7-machine",
@@ -1835,21 +1963,21 @@
"parent": "pcie-root-port-base"
},
{
- "name": "filter-mirror",
- "parent": "netfilter"
+ "name": "Skylake-Client-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
"name": "throttle-group",
"parent": "object"
},
- {
- "name": "pc-q35-2.10-machine",
- "parent": "generic-pc-machine"
- },
{
"name": "piix4-usb-uhci",
"parent": "pci-uhci-usb"
},
+ {
+ "name": "pc-q35-2.10-machine",
+ "parent": "generic-pc-machine"
+ },
{
"name": "virtio-rng-pci",
"parent": "virtio-rng-pci-base"
@@ -1866,6 +1994,10 @@
"name": "Skylake-Client-IBRS-x86_64-cpu",
"parent": "x86_64-cpu"
},
+ {
+ "name": "Cascadelake-Server-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "pci-testdev",
"parent": "pci-device"
@@ -1898,6 +2030,10 @@
"name": "ISA",
"parent": "bus"
},
+ {
+ "name": "phenom-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "vhost-vsock-pci",
"parent": "vhost-vsock-pci-base"
@@ -1910,14 +2046,14 @@
"name": "virtio-balloon-pci-non-transitional",
"parent": "virtio-balloon-pci-base"
},
- {
- "name": "ipmi-bmc-sim",
- "parent": "ipmi-bmc"
- },
{
"name": "virtio-net-pci-transitional",
"parent": "virtio-net-pci-base"
},
+ {
+ "name": "ipmi-bmc-sim",
+ "parent": "ipmi-bmc"
+ },
{
"name": "IvyBridge-IBRS-x86_64-cpu",
"parent": "x86_64-cpu"
@@ -1970,10 +2106,18 @@
"name": "pentium2-x86_64-cpu",
"parent": "x86_64-cpu"
},
+ {
+ "name": "Broadwell-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "qemu-xhci",
"parent": "base-xhci"
},
+ {
+ "name": "n270-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "pvpanic",
"parent": "isa-device"
@@ -1982,6 +2126,14 @@
"name": "rng-random",
"parent": "rng-backend"
},
+ {
+ "name": "KnightsMill-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Nehalem-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "kvmvapic",
"parent": "sys-bus-device"
@@ -2026,6 +2178,14 @@
"name": "pc-1.1-machine",
"parent": "generic-pc-machine"
},
+ {
+ "name": "Snowridge-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "IvyBridge-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "qxl",
"parent": "pci-qxl"
@@ -2055,17 +2215,21 @@
"parent": "virtio-balloon-pci-base"
},
{
- "name": "usb-bt-dongle",
- "parent": "usb-device"
+ "name": "Haswell-v4-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
- "name": "i82801b11-bridge",
- "parent": "base-pci-bridge"
+ "name": "usb-bt-dongle",
+ "parent": "usb-device"
},
{
"name": "virtio-keyboard-device",
"parent": "virtio-input-hid-device"
},
+ {
+ "name": "i82801b11-bridge",
+ "parent": "base-pci-bridge"
+ },
{
"name": "ramfb",
"parent": "sys-bus-device"
@@ -2082,6 +2246,10 @@
"name": "IndustryPack",
"parent": "bus"
},
+ {
+ "name": "Broadwell-v3-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "ioapic",
"parent": "ioapic-common"
@@ -2090,6 +2258,10 @@
"name": "pentium-x86_64-cpu",
"parent": "x86_64-cpu"
},
+ {
+ "name": "qemu32-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "Haswell-noTSX-x86_64-cpu",
"parent": "x86_64-cpu"
@@ -2114,6 +2286,10 @@
"name": "piix3-usb-uhci",
"parent": "pci-uhci-usb"
},
+ {
+ "name": "Opteron_G4-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "ne2k_isa",
"parent": "isa-device"
@@ -2134,6 +2310,10 @@
"name": "hda-duplex",
"parent": "hda-audio"
},
+ {
+ "name": "pentium-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "amd-iommu-iommu-memory-region",
"parent": "qemu:iommu-memory-region"
@@ -2170,6 +2350,10 @@
"name": "isa-parallel",
"parent": "isa-device"
},
+ {
+ "name": "pentium2-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "chardev-null",
"parent": "chardev"
@@ -2178,6 +2362,10 @@
"name": "isa-vga",
"parent": "isa-device"
},
+ {
+ "name": "EPYC-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "pc-i440fx-1.5-machine",
"parent": "generic-pc-machine"
@@ -2226,14 +2414,14 @@
"name": "i82558a",
"parent": "pci-device"
},
- {
- "name": "loader",
- "parent": "device"
- },
{
"name": "usb-serial",
"parent": "usb-serial-dev"
},
+ {
+ "name": "loader",
+ "parent": "device"
+ },
{
"name": "pvscsi",
"parent": "pci-device"
@@ -2242,13 +2430,17 @@
"name": "i82801",
"parent": "pci-device"
},
+ {
+ "name": "virtio-pmem-pci",
+ "parent": "virtio-pmem-pci-base"
+ },
{
"name": "accel",
"parent": "object"
},
{
"name": "virtio-tablet-pci",
- "parent": "virtio-input-hid-pci"
+ "parent": "virtio-tablet-pci-base-type"
},
{
"name": "dc390",
@@ -2294,6 +2486,10 @@
"name": "chardev-pipe",
"parent": "chardev-fd"
},
+ {
+ "name": "i2c-ddc",
+ "parent": "i2c-slave"
+ },
{
"name": "can-host-socketcan",
"parent": "can-host"
@@ -2303,17 +2499,21 @@
"parent": "pci-device"
},
{
- "name": "pci-bridge-seat",
- "parent": "pci-bridge"
+ "name": "mptsas1068",
+ "parent": "pci-device"
},
{
- "name": "kvm32-x86_64-cpu",
- "parent": "x86_64-cpu"
+ "name": "pci-bridge-seat",
+ "parent": "pci-bridge"
},
{
"name": "lsi53c895a",
"parent": "pci-device"
},
+ {
+ "name": "kvm32-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "SandyBridge-IBRS-x86_64-cpu",
"parent": "x86_64-cpu"
@@ -2322,6 +2522,10 @@
"name": "intel-hda",
"parent": "intel-hda-generic"
},
+ {
+ "name": "scsi-block",
+ "parent": "scsi-disk-base"
+ },
{
"name": "hyperv-synic",
"parent": "device"
@@ -2331,7 +2535,7 @@
"parent": "chardev"
},
{
- "name": "base-x86_64-cpu",
+ "name": "Opteron_G1-v1-x86_64-cpu",
"parent": "x86_64-cpu"
},
{
@@ -2347,12 +2551,16 @@
"parent": "pcie-root-port-base"
},
{
- "name": "mptsas1068",
- "parent": "pci-device"
+ "name": "base-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
- "name": "scsi-block",
- "parent": "scsi-disk-base"
+ "name": "kvm64-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
+ {
+ "name": "Snowridge-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
},
{
"name": "chardev-spicevmc",
@@ -2398,6 +2606,10 @@
"name": "filter-dump",
"parent": "netfilter"
},
+ {
+ "name": "chardev-ringbuf",
+ "parent": "chardev"
+ },
{
"name": "virtio-pci-bus",
"parent": "virtio-bus"
@@ -2406,14 +2618,14 @@
"name": "qemu,register",
"parent": "device"
},
- {
- "name": "chardev-ringbuf",
- "parent": "chardev"
- },
{
"name": "pc-0.15-machine",
"parent": "generic-pc-machine"
},
+ {
+ "name": "Skylake-Server-v1-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "vhost-user-blk",
"parent": "virtio-device"
@@ -2422,13 +2634,17 @@
"name": "Haswell-noTSX-IBRS-x86_64-cpu",
"parent": "x86_64-cpu"
},
+ {
+ "name": "SandyBridge-v2-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "qio-channel-tls",
"parent": "qio-channel"
},
{
"name": "virtio-vga",
- "parent": "virtio-vga-base"
+ "parent": "virtio-vga-base-type"
},
{
"name": "authz-pam",
@@ -2469,6 +2685,10 @@
"name": "queue-size",
"type": "uint16"
},
+ {
+ "name": "use-started",
+ "type": "bool"
+ },
{
"name": "werror",
"description": "Error handling policy, report/ignore/enospc/stop/auto",
@@ -2825,6 +3045,10 @@
"name": "x-mtu-bypass-backend",
"type": "bool"
},
+ {
+ "name": "bootindex",
+ "type": "int32"
+ },
{
"name": "x-pcie-pm-init",
"description": "on/off",
@@ -2836,8 +3060,8 @@
"type": "bool"
},
{
- "name": "bootindex",
- "type": "int32"
+ "name": "use-started",
+ "type": "bool"
},
{
"name": "ats",
@@ -3039,6 +3263,10 @@
"name": "virtio-backend",
"type": "child<virtio-scsi-device>"
},
+ {
+ "name": "use-started",
+ "type": "bool"
+ },
{
"name": "virtqueue_size",
"type": "uint32"
@@ -4293,6 +4521,10 @@
"name": "virtio-backend",
"type": "child<virtio-gpu-device>"
},
+ {
+ "name": "use-started",
+ "type": "bool"
+ },
{
"name": "multifunction",
"description": "on/off",
@@ -4489,6 +4721,10 @@
"description": "on/off",
"type": "bool"
},
+ {
+ "name": "use-started",
+ "type": "bool"
+ },
{
"name": "virgl",
"description": "on/off",
@@ -4633,6 +4869,10 @@
"name": "x-ignore-backend-features",
"type": "bool"
},
+ {
+ "name": "qemu-4-0-config-size",
+ "type": "bool"
+ },
{
"name": "virtio-backend",
"type": "child<virtio-balloon-device>"
@@ -4670,6 +4910,10 @@
"description": "on/off",
"type": "bool"
},
+ {
+ "name": "use-started",
+ "type": "bool"
+ },
{
"name": "iommu_platform",
"description": "on/off",
@@ -4701,7 +4945,7 @@
"type": "bool"
},
{
- "name": "deflate-on-oom",
+ "name": "event_idx",
"description": "on/off",
"type": "bool"
},
@@ -4729,7 +4973,7 @@
"type": "uint32"
},
{
- "name": "event_idx",
+ "name": "deflate-on-oom",
"description": "on/off",
"type": "bool"
},
@@ -4797,12 +5041,13 @@
{
"return": [
{
- "name": "guest-stats",
- "type": "guest statistics"
+ "name": "indirect_desc",
+ "description": "on/off",
+ "type": "bool"
},
{
- "name": "iothread",
- "type": "link<iothread>"
+ "name": "guest-stats-polling-interval",
+ "type": "int"
},
{
"name": "iommu_platform",
@@ -4810,14 +5055,19 @@
"type": "bool"
},
{
- "name": "guest-stats-polling-interval",
- "type": "int"
+ "name": "deflate-on-oom",
+ "description": "on/off",
+ "type": "bool"
},
{
"name": "event_idx",
"description": "on/off",
"type": "bool"
},
+ {
+ "name": "guest-stats",
+ "type": "guest statistics"
+ },
{
"name": "any_layout",
"description": "on/off",
@@ -4829,17 +5079,19 @@
"type": "bool"
},
{
- "name": "free-page-hint",
- "description": "on/off",
+ "name": "iothread",
+ "type": "link<iothread>"
+ },
+ {
+ "name": "qemu-4-0-config-size",
"type": "bool"
},
{
- "name": "deflate-on-oom",
- "description": "on/off",
+ "name": "use-started",
"type": "bool"
},
{
- "name": "indirect_desc",
+ "name": "free-page-hint",
"description": "on/off",
"type": "bool"
}
@@ -5247,6 +5499,10 @@
"name": "sse4_1",
"type": "bool"
},
+ {
+ "name": "core-capability",
+ "type": "bool"
+ },
{
"name": "popcnt",
"type": "bool"
@@ -5309,7 +5565,7 @@
},
{
"name": "hv-spinlocks",
- "type": "int"
+ "type": "uint32"
},
{
"name": "erms",
@@ -5325,28 +5581,29 @@
},
{
"name": "hv-reset",
+ "description": "on/off",
"type": "bool"
},
{
"name": "rdrand",
"type": "bool"
},
+ {
+ "name": "avx512-vpopcntdq",
+ "type": "bool"
+ },
{
"name": "model",
"type": "int"
},
{
- "name": "avx512-vpopcntdq",
+ "name": "xcrypt",
"type": "bool"
},
{
"name": "tbm",
"type": "bool"
},
- {
- "name": "xcrypt",
- "type": "bool"
- },
{
"name": "movdiri",
"type": "bool"
@@ -5377,6 +5634,7 @@
},
{
"name": "hv-runtime",
+ "description": "on/off",
"type": "bool"
},
{
@@ -5425,6 +5683,7 @@
},
{
"name": "hv-evmcs",
+ "description": "on/off",
"type": "bool"
},
{
@@ -5435,6 +5694,10 @@
"name": "pmm-en",
"type": "bool"
},
+ {
+ "name": "x-force-features",
+ "type": "bool"
+ },
{
"name": "dca",
"type": "bool"
@@ -5447,6 +5710,11 @@
"name": "perfctr-core",
"type": "bool"
},
+ {
+ "name": "hv-stimer-direct",
+ "description": "on/off",
+ "type": "bool"
+ },
{
"name": "pmu",
"type": "bool"
@@ -5456,11 +5724,11 @@
"type": "bool"
},
{
- "name": "pn",
+ "name": "invtsc",
"type": "bool"
},
{
- "name": "invtsc",
+ "name": "pn",
"type": "bool"
},
{
@@ -5556,11 +5824,12 @@
"type": "bool"
},
{
- "name": "cldemote",
+ "name": "hv-tlbflush",
+ "description": "on/off",
"type": "bool"
},
{
- "name": "hv-tlbflush",
+ "name": "cldemote",
"type": "bool"
},
{
@@ -5579,10 +5848,18 @@
"name": "cpuid-0xb",
"type": "bool"
},
+ {
+ "name": "vmcb_clean",
+ "type": "bool"
+ },
{
"name": "nrip_save",
"type": "bool"
},
+ {
+ "name": "die-id",
+ "type": "int32"
+ },
{
"name": "vme",
"type": "bool"
@@ -5595,16 +5872,12 @@
"name": "kvm-no-smi-migration",
"type": "bool"
},
- {
- "name": "kvm_pv_unhalt",
- "type": "bool"
- },
{
"name": "svm",
"type": "bool"
},
{
- "name": "lahf-lm",
+ "name": "kvm_pv_unhalt",
"type": "bool"
},
{
@@ -5628,11 +5901,11 @@
"type": "bool"
},
{
- "name": "vmcb_clean",
+ "name": "pfthreshold",
"type": "bool"
},
{
- "name": "pfthreshold",
+ "name": "lahf-lm",
"type": "bool"
},
{
@@ -5655,6 +5928,10 @@
"name": "pbe",
"type": "bool"
},
+ {
+ "name": "split-lock-detect",
+ "type": "bool"
+ },
{
"name": "apic-id",
"type": "uint32"
@@ -5664,11 +5941,11 @@
"type": "bool"
},
{
- "name": "l3-cache",
+ "name": "skinit",
"type": "bool"
},
{
- "name": "skinit",
+ "name": "l3-cache",
"type": "bool"
},
{
@@ -5680,11 +5957,11 @@
"type": "bool"
},
{
- "name": "ds-cpl",
+ "name": "pause-filter",
"type": "bool"
},
{
- "name": "pause-filter",
+ "name": "ds-cpl",
"type": "bool"
},
{
@@ -5724,11 +6001,11 @@
"type": "bool"
},
{
- "name": "avx512vl",
+ "name": "xstore-en",
"type": "bool"
},
{
- "name": "xstore-en",
+ "name": "avx512vl",
"type": "bool"
},
{
@@ -5749,6 +6026,7 @@
},
{
"name": "hv-frequencies",
+ "description": "on/off",
"type": "bool"
},
{
@@ -5776,11 +6054,11 @@
"type": "int"
},
{
- "name": "lbrv",
+ "name": "smx",
"type": "bool"
},
{
- "name": "smx",
+ "name": "lbrv",
"type": "bool"
},
{
@@ -5876,11 +6154,12 @@
"type": "bool"
},
{
- "name": "hv-stimer",
+ "name": "xop",
"type": "bool"
},
{
- "name": "xop",
+ "name": "hv-stimer",
+ "description": "on/off",
"type": "bool"
},
{
@@ -5893,6 +6172,7 @@
},
{
"name": "hv-synic",
+ "description": "on/off",
"type": "bool"
},
{
@@ -5911,6 +6191,10 @@
"name": "sse4-2",
"type": "bool"
},
+ {
+ "name": "hv-passthrough",
+ "type": "bool"
+ },
{
"name": "vmcb-clean",
"type": "bool"
@@ -5920,11 +6204,12 @@
"type": "bool"
},
{
- "name": "hv-reenlightenment",
+ "name": "svm-lock",
"type": "bool"
},
{
- "name": "svm-lock",
+ "name": "hv-reenlightenment",
+ "description": "on/off",
"type": "bool"
},
{
@@ -5945,6 +6230,7 @@
},
{
"name": "hv-vpindex",
+ "description": "on/off",
"type": "bool"
},
{
@@ -5988,7 +6274,7 @@
"type": "bool"
},
{
- "name": "kvm-mmu",
+ "name": "sha-ni",
"type": "bool"
},
{
@@ -6000,7 +6286,7 @@
"type": "bool"
},
{
- "name": "sha-ni",
+ "name": "kvm-mmu",
"type": "bool"
},
{
@@ -6153,6 +6439,7 @@
},
{
"name": "hv-crash",
+ "description": "on/off",
"type": "bool"
},
{
@@ -6193,6 +6480,7 @@
},
{
"name": "hv-time",
+ "description": "on/off",
"type": "bool"
},
{
@@ -6305,6 +6593,7 @@
},
{
"name": "hv-relaxed",
+ "description": "on/off",
"type": "bool"
},
{
@@ -6315,12 +6604,9 @@
"name": "fxsr",
"type": "bool"
},
- {
- "name": "amd-ssbd",
- "type": "bool"
- },
{
"name": "hv-vapic",
+ "description": "on/off",
"type": "bool"
},
{
@@ -6329,22 +6615,23 @@
},
{
"name": "hv-ipi",
+ "description": "on/off",
"type": "bool"
},
{
- "name": "hypervisor",
+ "name": "sse4_2",
"type": "bool"
},
{
- "name": "aes",
+ "name": "hypervisor",
"type": "bool"
},
{
- "name": "de",
+ "name": "aes",
"type": "bool"
},
{
- "name": "sse4_2",
+ "name": "amd-ssbd",
"type": "bool"
},
{
@@ -6355,6 +6642,10 @@
"name": "ss",
"type": "bool"
},
+ {
+ "name": "de",
+ "type": "bool"
+ },
{
"name": "fma",
"type": "bool"
@@ -6373,230 +6664,320 @@
{
"hotpluggable-cpus": true,
"name": "pc-0.15",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": true
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-2.12",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-2.0",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-2.5",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-1.5",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-q35-2.7",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-0.12",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": true
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-2.2",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-1.1",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": false,
"name": "none",
- "cpu-max": 1
+ "numa-mem-supported": false,
+ "cpu-max": 1,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-2.7",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-q35-2.4",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-q35-2.10",
- "cpu-max": 288
+ "numa-mem-supported": true,
+ "cpu-max": 288,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-1.7",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-0.14",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": true
},
{
"hotpluggable-cpus": true,
"name": "pc-q35-2.9",
- "cpu-max": 288
+ "numa-mem-supported": true,
+ "cpu-max": 288,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-2.11",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-q35-3.1",
- "cpu-max": 288
+ "numa-mem-supported": true,
+ "cpu-max": 288,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-q35-4.1",
+ "numa-mem-supported": true,
"cpu-max": 288,
+ "deprecated": false,
"alias": "q35"
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-2.4",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-1.3",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-4.1",
+ "numa-mem-supported": true,
"is-default": true,
"cpu-max": 255,
+ "deprecated": false,
"alias": "pc"
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-2.9",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "isapc",
- "cpu-max": 1
+ "numa-mem-supported": true,
+ "cpu-max": 1,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-1.4",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-q35-2.6",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-3.1",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-q35-2.12",
- "cpu-max": 288
+ "numa-mem-supported": true,
+ "cpu-max": 288,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-2.1",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-1.0",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-2.6",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-q35-4.0.1",
- "cpu-max": 288
+ "numa-mem-supported": true,
+ "cpu-max": 288,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-1.6",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-0.13",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": true
},
{
"hotpluggable-cpus": true,
"name": "pc-q35-2.8",
- "cpu-max": 288
+ "numa-mem-supported": true,
+ "cpu-max": 288,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-2.10",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-q35-3.0",
- "cpu-max": 288
+ "numa-mem-supported": true,
+ "cpu-max": 288,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-q35-4.0",
- "cpu-max": 288
+ "numa-mem-supported": true,
+ "cpu-max": 288,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-2.3",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-1.2",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-4.0",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-2.8",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-q35-2.5",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-i440fx-3.0",
- "cpu-max": 255
+ "numa-mem-supported": true,
+ "cpu-max": 255,
+ "deprecated": false
},
{
"hotpluggable-cpus": true,
"name": "pc-q35-2.11",
- "cpu-max": 288
+ "numa-mem-supported": true,
+ "cpu-max": 288,
+ "deprecated": false
}
],
"id": "libvirt-38"
@@ -6633,11 +7014,28 @@
"static": true,
"migration-safe": true
},
+ {
+ "name": "qemu64-v1",
+ "typename": "qemu64-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "static": false,
+ "migration-safe": true
+ },
{
"name": "qemu64",
"typename": "qemu64-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "qemu64-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "qemu32-v1",
+ "typename": "qemu32-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6646,6 +7044,21 @@
"typename": "qemu32-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "qemu32-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "phenom-v1",
+ "typename": "phenom-v1-x86_64-cpu",
+ "unavailable-features": [
+ "mmxext",
+ "fxsr-opt",
+ "3dnowext",
+ "3dnow",
+ "sse4a",
+ "npt"
+ ],
"static": false,
"migration-safe": true
},
@@ -6660,6 +7073,15 @@
"sse4a",
"npt"
],
+ "alias-of": "phenom-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "pentium3-v1",
+ "typename": "pentium3-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6668,6 +7090,15 @@
"typename": "pentium3-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "pentium3-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "pentium2-v1",
+ "typename": "pentium2-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6676,6 +7107,15 @@
"typename": "pentium2-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "pentium2-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "pentium-v1",
+ "typename": "pentium-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6684,6 +7124,15 @@
"typename": "pentium-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "pentium-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "n270-v1",
+ "typename": "n270-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6692,6 +7141,15 @@
"typename": "n270-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "n270-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "kvm64-v1",
+ "typename": "kvm64-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6700,6 +7158,15 @@
"typename": "kvm64-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "kvm64-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "kvm32-v1",
+ "typename": "kvm32-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6708,6 +7175,15 @@
"typename": "kvm32-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "kvm32-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "coreduo-v1",
+ "typename": "coreduo-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6716,6 +7192,15 @@
"typename": "coreduo-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "coreduo-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "core2duo-v1",
+ "typename": "core2duo-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6724,6 +7209,18 @@
"typename": "core2duo-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "core2duo-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "athlon-v1",
+ "typename": "athlon-v1-x86_64-cpu",
+ "unavailable-features": [
+ "mmxext",
+ "3dnowext",
+ "3dnow"
+ ],
"static": false,
"migration-safe": true
},
@@ -6735,6 +7232,23 @@
"3dnowext",
"3dnow"
],
+ "alias-of": "athlon-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Westmere-v2",
+ "typename": "Westmere-v2-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Westmere-v1",
+ "typename": "Westmere-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6743,6 +7257,7 @@
"typename": "Westmere-IBRS-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Westmere-v2",
"static": false,
"migration-safe": true
},
@@ -6751,6 +7266,78 @@
"typename": "Westmere-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Westmere-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Snowridge-v1",
+ "typename": "Snowridge-v1-x86_64-cpu",
+ "unavailable-features": [
+ "clwb",
+ "sha-ni",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "core-capability",
+ "split-lock-detect"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Snowridge",
+ "typename": "Snowridge-x86_64-cpu",
+ "unavailable-features": [
+ "clwb",
+ "sha-ni",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "core-capability",
+ "split-lock-detect"
+ ],
+ "alias-of": "Snowridge-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Server-v2",
+ "typename": "Skylake-Server-v2-x86_64-cpu",
+ "unavailable-features": [
+ "avx512f",
+ "avx512dq",
+ "clwb",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Server-v1",
+ "typename": "Skylake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "avx512f",
+ "avx512dq",
+ "clwb",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
"static": false,
"migration-safe": true
},
@@ -6770,6 +7357,7 @@
"avx512f",
"pku"
],
+ "alias-of": "Skylake-Server-v2",
"static": false,
"migration-safe": true
},
@@ -6789,6 +7377,23 @@
"avx512f",
"pku"
],
+ "alias-of": "Skylake-Server-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Client-v2",
+ "typename": "Skylake-Client-v2-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Client-v1",
+ "typename": "Skylake-Client-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6797,6 +7402,7 @@
"typename": "Skylake-Client-IBRS-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Skylake-Client-v2",
"static": false,
"migration-safe": true
},
@@ -6805,6 +7411,23 @@
"typename": "Skylake-Client-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Skylake-Client-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "SandyBridge-v2",
+ "typename": "SandyBridge-v2-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "SandyBridge-v1",
+ "typename": "SandyBridge-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6813,6 +7436,7 @@
"typename": "SandyBridge-IBRS-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "SandyBridge-v2",
"static": false,
"migration-safe": true
},
@@ -6821,6 +7445,15 @@
"typename": "SandyBridge-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "SandyBridge-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Penryn-v1",
+ "typename": "Penryn-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6829,6 +7462,22 @@
"typename": "Penryn-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Penryn-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G5-v1",
+ "typename": "Opteron_G5-v1-x86_64-cpu",
+ "unavailable-features": [
+ "sse4a",
+ "misalignsse",
+ "xop",
+ "fma4",
+ "tbm",
+ "npt",
+ "nrip-save"
+ ],
"static": false,
"migration-safe": true
},
@@ -6844,6 +7493,21 @@
"npt",
"nrip-save"
],
+ "alias-of": "Opteron_G5-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G4-v1",
+ "typename": "Opteron_G4-v1-x86_64-cpu",
+ "unavailable-features": [
+ "sse4a",
+ "misalignsse",
+ "xop",
+ "fma4",
+ "npt",
+ "nrip-save"
+ ],
"static": false,
"migration-safe": true
},
@@ -6858,6 +7522,17 @@
"npt",
"nrip-save"
],
+ "alias-of": "Opteron_G4-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G3-v1",
+ "typename": "Opteron_G3-v1-x86_64-cpu",
+ "unavailable-features": [
+ "sse4a",
+ "misalignsse"
+ ],
"static": false,
"migration-safe": true
},
@@ -6868,6 +7543,15 @@
"sse4a",
"misalignsse"
],
+ "alias-of": "Opteron_G3-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G2-v1",
+ "typename": "Opteron_G2-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6876,6 +7560,15 @@
"typename": "Opteron_G2-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Opteron_G2-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G1-v1",
+ "typename": "Opteron_G1-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6884,6 +7577,23 @@
"typename": "Opteron_G1-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Opteron_G1-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Nehalem-v2",
+ "typename": "Nehalem-v2-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Nehalem-v1",
+ "typename": "Nehalem-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6892,6 +7602,7 @@
"typename": "Nehalem-IBRS-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Nehalem-v2",
"static": false,
"migration-safe": true
},
@@ -6900,12 +7611,13 @@
"typename": "Nehalem-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Nehalem-v2",
"static": false,
"migration-safe": true
},
{
- "name": "KnightsMill",
- "typename": "KnightsMill-x86_64-cpu",
+ "name": "KnightsMill-v1",
+ "typename": "KnightsMill-v1-x86_64-cpu",
"unavailable-features": [
"avx512f",
"avx512pf",
@@ -6922,18 +7634,84 @@
"migration-safe": true
},
{
- "name": "IvyBridge-IBRS",
- "typename": "IvyBridge-IBRS-x86_64-cpu",
+ "name": "KnightsMill",
+ "typename": "KnightsMill-x86_64-cpu",
"unavailable-features": [
- ],
- "static": false,
- "migration-safe": true
+ "avx512f",
+ "avx512pf",
+ "avx512er",
+ "avx512cd",
+ "avx512-vpopcntdq",
+ "avx512-4vnniw",
+ "avx512-4fmaps",
+ "avx512f",
+ "avx512f",
+ "avx512f"
+ ],
+ "alias-of": "KnightsMill-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "IvyBridge-v2",
+ "typename": "IvyBridge-v2-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "IvyBridge-v1",
+ "typename": "IvyBridge-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "IvyBridge-IBRS",
+ "typename": "IvyBridge-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "alias-of": "IvyBridge-v2",
+ "static": false,
+ "migration-safe": true
},
{
"name": "IvyBridge",
"typename": "IvyBridge-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "IvyBridge-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Icelake-Server-v1",
+ "typename": "Icelake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "avx512f",
+ "avx512dq",
+ "clwb",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "wbnoinvd",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
"static": false,
"migration-safe": true
},
@@ -6963,6 +7741,26 @@
"avx512f",
"pku"
],
+ "alias-of": "Icelake-Server-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Icelake-Client-v1",
+ "typename": "Icelake-Client-v1-x86_64-cpu",
+ "unavailable-features": [
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "wbnoinvd",
+ "pku"
+ ],
"static": false,
"migration-safe": true
},
@@ -6982,6 +7780,39 @@
"wbnoinvd",
"pku"
],
+ "alias-of": "Icelake-Client-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Haswell-v4",
+ "typename": "Haswell-v4-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Haswell-v3",
+ "typename": "Haswell-v3-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Haswell-v2",
+ "typename": "Haswell-v2-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Haswell-v1",
+ "typename": "Haswell-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -6990,6 +7821,7 @@
"typename": "Haswell-noTSX-IBRS-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Haswell-v4",
"static": false,
"migration-safe": true
},
@@ -6998,6 +7830,7 @@
"typename": "Haswell-noTSX-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Haswell-v2",
"static": false,
"migration-safe": true
},
@@ -7006,6 +7839,7 @@
"typename": "Haswell-IBRS-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Haswell-v3",
"static": false,
"migration-safe": true
},
@@ -7014,6 +7848,42 @@
"typename": "Haswell-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Haswell-v4",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "EPYC-v2",
+ "typename": "EPYC-v2-x86_64-cpu",
+ "unavailable-features": [
+ "sha-ni",
+ "mmxext",
+ "fxsr-opt",
+ "cr8legacy",
+ "sse4a",
+ "misalignsse",
+ "osvw",
+ "ibpb",
+ "npt",
+ "nrip-save"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "EPYC-v1",
+ "typename": "EPYC-v1-x86_64-cpu",
+ "unavailable-features": [
+ "sha-ni",
+ "mmxext",
+ "fxsr-opt",
+ "cr8legacy",
+ "sse4a",
+ "misalignsse",
+ "osvw",
+ "npt",
+ "nrip-save"
+ ],
"static": false,
"migration-safe": true
},
@@ -7032,6 +7902,7 @@
"npt",
"nrip-save"
],
+ "alias-of": "EPYC-v2",
"static": false,
"migration-safe": true
},
@@ -7046,6 +7917,25 @@
"sse4a",
"misalignsse",
"osvw",
+ "ibpb",
+ "npt",
+ "nrip-save"
+ ],
+ "alias-of": "EPYC-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Dhyana-v1",
+ "typename": "Dhyana-v1-x86_64-cpu",
+ "unavailable-features": [
+ "mmxext",
+ "fxsr-opt",
+ "cr8legacy",
+ "sse4a",
+ "misalignsse",
+ "osvw",
+ "ibpb",
"npt",
"nrip-save"
],
@@ -7066,6 +7956,15 @@
"npt",
"nrip-save"
],
+ "alias-of": "Dhyana-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Conroe-v1",
+ "typename": "Conroe-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -7074,6 +7973,50 @@
"typename": "Conroe-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Conroe-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Cascadelake-Server-v2",
+ "typename": "Cascadelake-Server-v2-x86_64-cpu",
+ "unavailable-features": [
+ "avx512f",
+ "avx512dq",
+ "clwb",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "rdctl-no",
+ "ibrs-all",
+ "mds-no"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Cascadelake-Server-v1",
+ "typename": "Cascadelake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "avx512f",
+ "avx512dq",
+ "clwb",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
"static": false,
"migration-safe": true
},
@@ -7092,7 +8035,43 @@
"avx512f",
"avx512f",
"avx512f",
- "pku"
+ "pku",
+ "rdctl-no",
+ "ibrs-all",
+ "mds-no"
+ ],
+ "alias-of": "Cascadelake-Server-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-v4",
+ "typename": "Broadwell-v4-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-v3",
+ "typename": "Broadwell-v3-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-v2",
+ "typename": "Broadwell-v2-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-v1",
+ "typename": "Broadwell-v1-x86_64-cpu",
+ "unavailable-features": [
],
"static": false,
"migration-safe": true
@@ -7102,6 +8081,7 @@
"typename": "Broadwell-noTSX-IBRS-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Broadwell-v4",
"static": false,
"migration-safe": true
},
@@ -7110,6 +8090,7 @@
"typename": "Broadwell-noTSX-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Broadwell-v2",
"static": false,
"migration-safe": true
},
@@ -7118,6 +8099,7 @@
"typename": "Broadwell-IBRS-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Broadwell-v3",
"static": false,
"migration-safe": true
},
@@ -7126,6 +8108,15 @@
"typename": "Broadwell-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Broadwell-v4",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "486-v1",
+ "typename": "486-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -7134,6 +8125,7 @@
"typename": "486-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "486-v1",
"static": false,
"migration-safe": true
}
@@ -7826,6 +8818,10 @@
"name": "cores",
"type": "number"
},
+ {
+ "name": "dies",
+ "type": "number"
+ },
{
"name": "sockets",
"type": "number"
@@ -9063,84 +10059,107 @@
"arg-type": "85"
},
{
- "name": "set_link",
+ "name": "dump-guest-memory",
"ret-type": "0",
"meta-type": "command",
"arg-type": "86"
},
+ {
+ "name": "query-dump",
+ "ret-type": "87",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "DUMP_COMPLETED",
+ "meta-type": "event",
+ "arg-type": "88"
+ },
+ {
+ "name": "query-dump-guest-memory-capability",
+ "ret-type": "89",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "set_link",
+ "ret-type": "0",
+ "meta-type": "command",
+ "arg-type": "90"
+ },
{
"name": "netdev_add",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "87"
+ "arg-type": "91"
},
{
"name": "netdev_del",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "88"
+ "arg-type": "92"
},
{
"name": "query-rx-filter",
- "ret-type": "[90]",
+ "ret-type": "[94]",
"meta-type": "command",
- "arg-type": "89"
+ "arg-type": "93"
},
{
"name": "NIC_RX_FILTER_CHANGED",
"meta-type": "event",
- "arg-type": "91"
+ "arg-type": "95"
},
{
"name": "announce-self",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "92"
+ "arg-type": "96"
},
{
"name": "RDMA_GID_STATUS_CHANGED",
"meta-type": "event",
- "arg-type": "93"
+ "arg-type": "97"
},
{
"name": "query-rocker",
- "ret-type": "95",
+ "ret-type": "99",
"meta-type": "command",
- "arg-type": "94"
+ "arg-type": "98"
},
{
"name": "query-rocker-ports",
- "ret-type": "[97]",
+ "ret-type": "[101]",
"meta-type": "command",
- "arg-type": "96"
+ "arg-type": "100"
},
{
"name": "query-rocker-of-dpa-flows",
- "ret-type": "[99]",
+ "ret-type": "[103]",
"meta-type": "command",
- "arg-type": "98"
+ "arg-type": "102"
},
{
"name": "query-rocker-of-dpa-groups",
- "ret-type": "[101]",
+ "ret-type": "[105]",
"meta-type": "command",
- "arg-type": "100"
+ "arg-type": "104"
},
{
"name": "query-tpm-models",
- "ret-type": "[102]",
+ "ret-type": "[106]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-tpm-types",
- "ret-type": "[103]",
+ "ret-type": "[107]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-tpm",
- "ret-type": "[104]",
+ "ret-type": "[108]",
"meta-type": "command",
"arg-type": "0"
},
@@ -9148,40 +10167,40 @@
"name": "set_password",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "105"
+ "arg-type": "109"
},
{
"name": "expire_password",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "106"
+ "arg-type": "110"
},
{
"name": "screendump",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "107"
+ "arg-type": "111"
},
{
"name": "query-spice",
- "ret-type": "108",
+ "ret-type": "112",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "SPICE_CONNECTED",
"meta-type": "event",
- "arg-type": "109"
+ "arg-type": "113"
},
{
"name": "SPICE_INITIALIZED",
"meta-type": "event",
- "arg-type": "110"
+ "arg-type": "114"
},
{
"name": "SPICE_DISCONNECTED",
"meta-type": "event",
- "arg-type": "111"
+ "arg-type": "115"
},
{
"name": "SPICE_MIGRATE_COMPLETED",
@@ -9190,13 +10209,13 @@
},
{
"name": "query-vnc",
- "ret-type": "112",
+ "ret-type": "116",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-vnc-servers",
- "ret-type": "[113]",
+ "ret-type": "[117]",
"meta-type": "command",
"arg-type": "0"
},
@@ -9204,26 +10223,26 @@
"name": "change-vnc-password",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "114"
+ "arg-type": "118"
},
{
"name": "VNC_CONNECTED",
"meta-type": "event",
- "arg-type": "115"
+ "arg-type": "119"
},
{
"name": "VNC_INITIALIZED",
"meta-type": "event",
- "arg-type": "116"
+ "arg-type": "120"
},
{
"name": "VNC_DISCONNECTED",
"meta-type": "event",
- "arg-type": "117"
+ "arg-type": "121"
},
{
"name": "query-mice",
- "ret-type": "[118]",
+ "ret-type": "[122]",
"meta-type": "command",
"arg-type": "0"
},
@@ -9231,23 +10250,23 @@
"name": "send-key",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "119"
+ "arg-type": "123"
},
{
"name": "input-send-event",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "120"
+ "arg-type": "124"
},
{
"name": "query-display-options",
- "ret-type": "121",
+ "ret-type": "125",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-migrate",
- "ret-type": "122",
+ "ret-type": "126",
"meta-type": "command",
"arg-type": "0"
},
@@ -9255,11 +10274,11 @@
"name": "migrate-set-capabilities",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "123"
+ "arg-type": "127"
},
{
"name": "query-migrate-capabilities",
- "ret-type": "[124]",
+ "ret-type": "[128]",
"meta-type": "command",
"arg-type": "0"
},
@@ -9267,11 +10286,11 @@
"name": "migrate-set-parameters",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "125"
+ "arg-type": "129"
},
{
"name": "query-migrate-parameters",
- "ret-type": "126",
+ "ret-type": "130",
"meta-type": "command",
"arg-type": "0"
},
@@ -9279,7 +10298,7 @@
"name": "client_migrate_info",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "127"
+ "arg-type": "131"
},
{
"name": "migrate-start-postcopy",
@@ -9290,17 +10309,17 @@
{
"name": "MIGRATION",
"meta-type": "event",
- "arg-type": "128"
+ "arg-type": "132"
},
{
"name": "MIGRATION_PASS",
"meta-type": "event",
- "arg-type": "129"
+ "arg-type": "133"
},
{
"name": "COLO_EXIT",
"meta-type": "event",
- "arg-type": "130"
+ "arg-type": "134"
},
{
"name": "x-colo-lost-heartbeat",
@@ -9318,25 +10337,25 @@
"name": "migrate-continue",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "131"
+ "arg-type": "135"
},
{
"name": "migrate_set_downtime",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "132"
+ "arg-type": "136"
},
{
"name": "migrate_set_speed",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "133"
+ "arg-type": "137"
},
{
"name": "migrate-set-cache-size",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "134"
+ "arg-type": "138"
},
{
"name": "query-migrate-cache-size",
@@ -9348,29 +10367,29 @@
"name": "migrate",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "135"
+ "arg-type": "139"
},
{
"name": "migrate-incoming",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "136"
+ "arg-type": "140"
},
{
"name": "xen-save-devices-state",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "137"
+ "arg-type": "141"
},
{
"name": "xen-set-replication",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "138"
+ "arg-type": "142"
},
{
"name": "query-xen-replication-status",
- "ret-type": "139",
+ "ret-type": "143",
"meta-type": "command",
"arg-type": "0"
},
@@ -9382,7 +10401,7 @@
},
{
"name": "query-colo-status",
- "ret-type": "140",
+ "ret-type": "144",
"meta-type": "command",
"arg-type": "0"
},
@@ -9391,7 +10410,7 @@
"ret-type": "0",
"allow-oob": true,
"meta-type": "command",
- "arg-type": "141"
+ "arg-type": "145"
},
{
"name": "migrate-pause",
@@ -9404,403 +10423,392 @@
"name": "transaction",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "142"
+ "arg-type": "146"
},
{
"name": "trace-event-get-state",
- "ret-type": "[144]",
+ "ret-type": "[148]",
"meta-type": "command",
- "arg-type": "143"
+ "arg-type": "147"
},
{
"name": "trace-event-set-state",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "145"
+ "arg-type": "149"
},
{
"name": "query-qmp-schema",
- "ret-type": "[146]",
+ "ret-type": "[150]",
"meta-type": "command",
"arg-type": "0"
},
{
- "name": "qmp_capabilities",
+ "name": "qom-list",
+ "ret-type": "[152]",
+ "meta-type": "command",
+ "arg-type": "151"
+ },
+ {
+ "name": "qom-get",
+ "ret-type": "any",
+ "meta-type": "command",
+ "arg-type": "153"
+ },
+ {
+ "name": "qom-set",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "147"
+ "arg-type": "154"
},
{
- "name": "query-version",
- "ret-type": "148",
+ "name": "qom-list-types",
+ "ret-type": "[156]",
"meta-type": "command",
- "arg-type": "0"
+ "arg-type": "155"
},
{
- "name": "query-commands",
- "ret-type": "[149]",
+ "name": "qom-list-properties",
+ "ret-type": "[152]",
"meta-type": "command",
- "arg-type": "0"
+ "arg-type": "157"
},
{
- "name": "add_client",
+ "name": "object-add",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "150"
+ "arg-type": "158"
},
{
- "name": "query-name",
- "ret-type": "151",
+ "name": "object-del",
+ "ret-type": "0",
"meta-type": "command",
- "arg-type": "0"
+ "arg-type": "159"
},
{
- "name": "query-kvm",
- "ret-type": "152",
+ "name": "device-list-properties",
+ "ret-type": "[152]",
"meta-type": "command",
- "arg-type": "0"
+ "arg-type": "160"
},
{
- "name": "query-uuid",
- "ret-type": "153",
+ "name": "device_add",
+ "ret-type": "0",
"meta-type": "command",
- "arg-type": "0"
+ "arg-type": "161"
},
{
- "name": "query-events",
- "ret-type": "[154]",
+ "name": "device_del",
+ "ret-type": "0",
"meta-type": "command",
- "arg-type": "0"
+ "arg-type": "162"
+ },
+ {
+ "name": "DEVICE_DELETED",
+ "meta-type": "event",
+ "arg-type": "163"
},
{
"name": "query-cpus",
- "ret-type": "[155]",
+ "ret-type": "[164]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-cpus-fast",
- "ret-type": "[156]",
+ "ret-type": "[165]",
"meta-type": "command",
"arg-type": "0"
},
{
- "name": "query-iothreads",
- "ret-type": "[157]",
+ "name": "cpu-add",
+ "ret-type": "0",
"meta-type": "command",
- "arg-type": "0"
+ "arg-type": "166"
},
{
- "name": "query-balloon",
- "ret-type": "158",
+ "name": "query-machines",
+ "ret-type": "[167]",
"meta-type": "command",
"arg-type": "0"
},
{
- "name": "BALLOON_CHANGE",
- "meta-type": "event",
- "arg-type": "159"
+ "name": "query-current-machine",
+ "ret-type": "168",
+ "meta-type": "command",
+ "arg-type": "0"
},
{
- "name": "query-pci",
- "ret-type": "[160]",
+ "name": "query-memdev",
+ "ret-type": "[169]",
"meta-type": "command",
"arg-type": "0"
},
{
- "name": "quit",
- "ret-type": "0",
+ "name": "query-hotpluggable-cpus",
+ "ret-type": "[170]",
"meta-type": "command",
"arg-type": "0"
},
{
- "name": "stop",
+ "name": "set-numa-node",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "0"
+ "arg-type": "171"
},
{
- "name": "system_reset",
- "ret-type": "0",
+ "name": "query-cpu-model-expansion",
+ "ret-type": "177",
"meta-type": "command",
- "arg-type": "0"
+ "arg-type": "176"
},
{
- "name": "system_powerdown",
- "ret-type": "0",
+ "name": "query-cpu-definitions",
+ "ret-type": "[178]",
"meta-type": "command",
"arg-type": "0"
},
{
- "name": "cpu-add",
+ "name": "qmp_capabilities",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "161"
+ "arg-type": "179"
},
{
- "name": "memsave",
- "ret-type": "0",
+ "name": "query-version",
+ "ret-type": "180",
"meta-type": "command",
- "arg-type": "162"
+ "arg-type": "0"
},
{
- "name": "pmemsave",
- "ret-type": "0",
+ "name": "query-commands",
+ "ret-type": "[181]",
"meta-type": "command",
- "arg-type": "163"
+ "arg-type": "0"
},
{
- "name": "cont",
+ "name": "add_client",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "0"
+ "arg-type": "182"
},
{
- "name": "x-exit-preconfig",
- "ret-type": "0",
+ "name": "query-name",
+ "ret-type": "183",
"meta-type": "command",
"arg-type": "0"
},
{
- "name": "system_wakeup",
- "ret-type": "0",
+ "name": "query-kvm",
+ "ret-type": "184",
"meta-type": "command",
"arg-type": "0"
},
{
- "name": "inject-nmi",
- "ret-type": "0",
+ "name": "query-uuid",
+ "ret-type": "185",
"meta-type": "command",
"arg-type": "0"
},
{
- "name": "balloon",
- "ret-type": "0",
+ "name": "query-events",
+ "ret-type": "[186]",
"meta-type": "command",
- "arg-type": "164"
+ "arg-type": "0"
},
{
- "name": "human-monitor-command",
- "ret-type": "str",
+ "name": "query-iothreads",
+ "ret-type": "[187]",
"meta-type": "command",
- "arg-type": "165"
+ "arg-type": "0"
},
{
- "name": "qom-list",
- "ret-type": "[167]",
+ "name": "query-balloon",
+ "ret-type": "188",
"meta-type": "command",
- "arg-type": "166"
+ "arg-type": "0"
},
{
- "name": "qom-get",
- "ret-type": "any",
- "meta-type": "command",
- "arg-type": "168"
+ "name": "BALLOON_CHANGE",
+ "meta-type": "event",
+ "arg-type": "189"
},
{
- "name": "qom-set",
- "ret-type": "0",
+ "name": "query-pci",
+ "ret-type": "[190]",
"meta-type": "command",
- "arg-type": "169"
+ "arg-type": "0"
},
{
- "name": "change",
+ "name": "quit",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "170"
+ "arg-type": "0"
},
{
- "name": "qom-list-types",
- "ret-type": "[172]",
+ "name": "stop",
+ "ret-type": "0",
"meta-type": "command",
- "arg-type": "171"
+ "arg-type": "0"
},
{
- "name": "device-list-properties",
- "ret-type": "[167]",
+ "name": "system_reset",
+ "ret-type": "0",
"meta-type": "command",
- "arg-type": "173"
+ "arg-type": "0"
},
{
- "name": "qom-list-properties",
- "ret-type": "[167]",
+ "name": "system_powerdown",
+ "ret-type": "0",
"meta-type": "command",
- "arg-type": "174"
+ "arg-type": "0"
},
{
- "name": "xen-set-global-dirty-log",
+ "name": "memsave",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "175"
+ "arg-type": "191"
},
{
- "name": "device_add",
+ "name": "pmemsave",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "176"
+ "arg-type": "192"
},
{
- "name": "device_del",
+ "name": "cont",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "177"
- },
- {
- "name": "DEVICE_DELETED",
- "meta-type": "event",
- "arg-type": "178"
+ "arg-type": "0"
},
{
- "name": "dump-guest-memory",
+ "name": "x-exit-preconfig",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "179"
+ "arg-type": "0"
},
{
- "name": "query-dump",
- "ret-type": "180",
+ "name": "system_wakeup",
+ "ret-type": "0",
"meta-type": "command",
"arg-type": "0"
},
{
- "name": "DUMP_COMPLETED",
- "meta-type": "event",
- "arg-type": "181"
- },
- {
- "name": "query-dump-guest-memory-capability",
- "ret-type": "182",
+ "name": "inject-nmi",
+ "ret-type": "0",
"meta-type": "command",
"arg-type": "0"
},
{
- "name": "object-add",
+ "name": "balloon",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "183"
+ "arg-type": "193"
},
{
- "name": "object-del",
- "ret-type": "0",
+ "name": "human-monitor-command",
+ "ret-type": "str",
"meta-type": "command",
- "arg-type": "184"
+ "arg-type": "194"
},
{
- "name": "getfd",
+ "name": "change",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "185"
+ "arg-type": "195"
},
{
- "name": "closefd",
+ "name": "xen-set-global-dirty-log",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "186"
+ "arg-type": "196"
},
{
- "name": "query-machines",
- "ret-type": "[187]",
+ "name": "getfd",
+ "ret-type": "0",
"meta-type": "command",
- "arg-type": "0"
+ "arg-type": "197"
},
{
- "name": "query-current-machine",
- "ret-type": "188",
+ "name": "closefd",
+ "ret-type": "0",
"meta-type": "command",
- "arg-type": "0"
+ "arg-type": "198"
},
{
"name": "query-memory-size-summary",
- "ret-type": "189",
+ "ret-type": "199",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "add-fd",
- "ret-type": "191",
+ "ret-type": "201",
"meta-type": "command",
- "arg-type": "190"
+ "arg-type": "200"
},
{
"name": "remove-fd",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "192"
+ "arg-type": "202"
},
{
"name": "query-fdsets",
- "ret-type": "[193]",
+ "ret-type": "[203]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-target",
- "ret-type": "194",
+ "ret-type": "204",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-command-line-options",
- "ret-type": "[196]",
+ "ret-type": "[206]",
"meta-type": "command",
- "arg-type": "195"
- },
- {
- "name": "query-memdev",
- "ret-type": "[197]",
- "meta-type": "command",
- "arg-type": "0"
+ "arg-type": "205"
},
{
"name": "query-memory-devices",
- "ret-type": "[198]",
+ "ret-type": "[207]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "MEM_UNPLUG_ERROR",
"meta-type": "event",
- "arg-type": "199"
+ "arg-type": "208"
},
{
"name": "query-acpi-ospm-status",
- "ret-type": "[200]",
+ "ret-type": "[209]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "ACPI_DEVICE_OST",
"meta-type": "event",
- "arg-type": "201"
+ "arg-type": "210"
},
{
"name": "xen-load-devices-state",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "202"
- },
- {
- "name": "query-hotpluggable-cpus",
- "ret-type": "[203]",
- "meta-type": "command",
- "arg-type": "0"
+ "arg-type": "211"
},
{
"name": "query-vm-generation-id",
- "ret-type": "204",
+ "ret-type": "212",
"meta-type": "command",
"arg-type": "0"
},
- {
- "name": "set-numa-node",
- "ret-type": "0",
- "meta-type": "command",
- "arg-type": "205"
- },
{
"name": "RTC_CHANGE",
"meta-type": "event",
- "arg-type": "206"
+ "arg-type": "213"
},
{
"name": "rtc-reset-reinjection",
@@ -9810,31 +10818,19 @@
},
{
"name": "query-sev",
- "ret-type": "207",
+ "ret-type": "214",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-sev-launch-measure",
- "ret-type": "208",
+ "ret-type": "215",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-sev-capabilities",
- "ret-type": "209",
- "meta-type": "command",
- "arg-type": "0"
- },
- {
- "name": "query-cpu-model-expansion",
- "ret-type": "217",
- "meta-type": "command",
- "arg-type": "216"
- },
- {
- "name": "query-cpu-definitions",
- "ret-type": "[218]",
+ "ret-type": "216",
"meta-type": "command",
"arg-type": "0"
},
@@ -12141,6 +13137,83 @@
},
{
"name": "86",
+ "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": "280"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "87",
+ "members": [
+ {
+ "name": "status",
+ "type": "281"
+ },
+ {
+ "name": "completed",
+ "type": "int"
+ },
+ {
+ "name": "total",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "88",
+ "members": [
+ {
+ "name": "result",
+ "type": "87"
+ },
+ {
+ "name": "error",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "89",
+ "members": [
+ {
+ "name": "formats",
+ "type": "[280]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "90",
"members": [
{
"name": "name",
@@ -12154,7 +13227,7 @@
"meta-type": "object"
},
{
- "name": "87",
+ "name": "91",
"members": [
{
"name": "type",
@@ -12168,7 +13241,7 @@
"meta-type": "object"
},
{
- "name": "88",
+ "name": "92",
"members": [
{
"name": "id",
@@ -12178,7 +13251,7 @@
"meta-type": "object"
},
{
- "name": "89",
+ "name": "93",
"members": [
{
"name": "name",
@@ -12189,12 +13262,12 @@
"meta-type": "object"
},
{
- "name": "[90]",
- "element-type": "90",
+ "name": "[94]",
+ "element-type": "94",
"meta-type": "array"
},
{
- "name": "90",
+ "name": "94",
"members": [
{
"name": "name",
@@ -12206,15 +13279,15 @@
},
{
"name": "multicast",
- "type": "280"
+ "type": "282"
},
{
"name": "unicast",
- "type": "280"
+ "type": "282"
},
{
"name": "vlan",
- "type": "280"
+ "type": "282"
},
{
"name": "broadcast-allowed",
@@ -12248,7 +13321,7 @@
"meta-type": "object"
},
{
- "name": "91",
+ "name": "95",
"members": [
{
"name": "name",
@@ -12263,7 +13336,7 @@
"meta-type": "object"
},
{
- "name": "92",
+ "name": "96",
"members": [
{
"name": "initial",
@@ -12280,12 +13353,22 @@
{
"name": "step",
"type": "int"
+ },
+ {
+ "name": "interfaces",
+ "default": null,
+ "type": "[str]"
+ },
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
}
],
"meta-type": "object"
},
{
- "name": "93",
+ "name": "97",
"members": [
{
"name": "netdev",
@@ -12307,7 +13390,7 @@
"meta-type": "object"
},
{
- "name": "94",
+ "name": "98",
"members": [
{
"name": "name",
@@ -12317,7 +13400,7 @@
"meta-type": "object"
},
{
- "name": "95",
+ "name": "99",
"members": [
{
"name": "name",
@@ -12335,7 +13418,7 @@
"meta-type": "object"
},
{
- "name": "96",
+ "name": "100",
"members": [
{
"name": "name",
@@ -12345,12 +13428,12 @@
"meta-type": "object"
},
{
- "name": "[97]",
- "element-type": "97",
+ "name": "[101]",
+ "element-type": "101",
"meta-type": "array"
},
{
- "name": "97",
+ "name": "101",
"members": [
{
"name": "name",
@@ -12370,17 +13453,17 @@
},
{
"name": "duplex",
- "type": "281"
+ "type": "283"
},
{
"name": "autoneg",
- "type": "282"
+ "type": "284"
}
],
"meta-type": "object"
},
{
- "name": "98",
+ "name": "102",
"members": [
{
"name": "name",
@@ -12395,12 +13478,12 @@
"meta-type": "object"
},
{
- "name": "[99]",
- "element-type": "99",
+ "name": "[103]",
+ "element-type": "103",
"meta-type": "array"
},
{
- "name": "99",
+ "name": "103",
"members": [
{
"name": "cookie",
@@ -12412,21 +13495,21 @@
},
{
"name": "key",
- "type": "283"
+ "type": "285"
},
{
"name": "mask",
- "type": "284"
+ "type": "286"
},
{
"name": "action",
- "type": "285"
+ "type": "287"
}
],
"meta-type": "object"
},
{
- "name": "100",
+ "name": "104",
"members": [
{
"name": "name",
@@ -12441,12 +13524,12 @@
"meta-type": "object"
},
{
- "name": "[101]",
- "element-type": "101",
+ "name": "[105]",
+ "element-type": "105",
"meta-type": "array"
},
{
- "name": "101",
+ "name": "105",
"members": [
{
"name": "id",
@@ -12515,12 +13598,12 @@
"meta-type": "object"
},
{
- "name": "[102]",
- "element-type": "102",
+ "name": "[106]",
+ "element-type": "106",
"meta-type": "array"
},
{
- "name": "102",
+ "name": "106",
"meta-type": "enum",
"values": [
"tpm-tis",
@@ -12528,12 +13611,12 @@
]
},
{
- "name": "[103]",
- "element-type": "103",
+ "name": "[107]",
+ "element-type": "107",
"meta-type": "array"
},
{
- "name": "103",
+ "name": "107",
"meta-type": "enum",
"values": [
"passthrough",
@@ -12541,12 +13624,12 @@
]
},
{
- "name": "[104]",
- "element-type": "104",
+ "name": "[108]",
+ "element-type": "108",
"meta-type": "array"
},
{
- "name": "104",
+ "name": "108",
"members": [
{
"name": "id",
@@ -12554,17 +13637,17 @@
},
{
"name": "model",
- "type": "102"
+ "type": "106"
},
{
"name": "options",
- "type": "286"
+ "type": "288"
}
],
"meta-type": "object"
},
{
- "name": "105",
+ "name": "109",
"members": [
{
"name": "protocol",
@@ -12583,7 +13666,7 @@
"meta-type": "object"
},
{
- "name": "106",
+ "name": "110",
"members": [
{
"name": "protocol",
@@ -12597,7 +13680,7 @@
"meta-type": "object"
},
{
- "name": "107",
+ "name": "111",
"members": [
{
"name": "filename",
@@ -12617,7 +13700,7 @@
"meta-type": "object"
},
{
- "name": "108",
+ "name": "112",
"members": [
{
"name": "enabled",
@@ -12654,60 +13737,60 @@
},
{
"name": "mouse-mode",
- "type": "287"
+ "type": "289"
},
{
"name": "channels",
"default": null,
- "type": "[288]"
+ "type": "[290]"
}
],
"meta-type": "object"
},
{
- "name": "109",
+ "name": "113",
"members": [
{
"name": "server",
- "type": "289"
+ "type": "291"
},
{
"name": "client",
- "type": "289"
+ "type": "291"
}
],
"meta-type": "object"
},
{
- "name": "110",
+ "name": "114",
"members": [
{
"name": "server",
- "type": "290"
+ "type": "292"
},
{
"name": "client",
- "type": "288"
+ "type": "290"
}
],
"meta-type": "object"
},
{
- "name": "111",
+ "name": "115",
"members": [
{
"name": "server",
- "type": "289"
+ "type": "291"
},
{
"name": "client",
- "type": "289"
+ "type": "291"
}
],
"meta-type": "object"
},
{
- "name": "112",
+ "name": "116",
"members": [
{
"name": "enabled",
@@ -12721,7 +13804,7 @@
{
"name": "family",
"default": null,
- "type": "291"
+ "type": "293"
},
{
"name": "service",
@@ -12736,18 +13819,18 @@
{
"name": "clients",
"default": null,
- "type": "[292]"
+ "type": "[294]"
}
],
"meta-type": "object"
},
{
- "name": "[113]",
- "element-type": "113",
+ "name": "[117]",
+ "element-type": "117",
"meta-type": "array"
},
{
- "name": "113",
+ "name": "117",
"members": [
{
"name": "id",
@@ -12755,20 +13838,20 @@
},
{
"name": "server",
- "type": "[293]"
+ "type": "[295]"
},
{
"name": "clients",
- "type": "[292]"
+ "type": "[294]"
},
{
"name": "auth",
- "type": "294"
+ "type": "296"
},
{
"name": "vencrypt",
"default": null,
- "type": "295"
+ "type": "297"
},
{
"name": "display",
@@ -12779,7 +13862,7 @@
"meta-type": "object"
},
{
- "name": "114",
+ "name": "118",
"members": [
{
"name": "password",
@@ -12789,54 +13872,54 @@
"meta-type": "object"
},
{
- "name": "115",
+ "name": "119",
"members": [
{
"name": "server",
- "type": "296"
+ "type": "298"
},
{
"name": "client",
- "type": "297"
+ "type": "299"
}
],
"meta-type": "object"
},
{
- "name": "116",
+ "name": "120",
"members": [
{
"name": "server",
- "type": "296"
+ "type": "298"
},
{
"name": "client",
- "type": "292"
+ "type": "294"
}
],
"meta-type": "object"
},
{
- "name": "117",
+ "name": "121",
"members": [
{
"name": "server",
- "type": "296"
+ "type": "298"
},
{
"name": "client",
- "type": "292"
+ "type": "294"
}
],
"meta-type": "object"
},
{
- "name": "[118]",
- "element-type": "118",
+ "name": "[122]",
+ "element-type": "122",
"meta-type": "array"
},
{
- "name": "118",
+ "name": "122",
"members": [
{
"name": "name",
@@ -12858,11 +13941,11 @@
"meta-type": "object"
},
{
- "name": "119",
+ "name": "123",
"members": [
{
"name": "keys",
- "type": "[298]"
+ "type": "[300]"
},
{
"name": "hold-time",
@@ -12873,7 +13956,7 @@
"meta-type": "object"
},
{
- "name": "120",
+ "name": "124",
"members": [
{
"name": "device",
@@ -12887,26 +13970,26 @@
},
{
"name": "events",
- "type": "[299]"
+ "type": "[301]"
}
],
"meta-type": "object"
},
{
- "name": "121",
+ "name": "125",
"tag": "type",
"variants": [
{
"case": "gtk",
- "type": "302"
+ "type": "304"
},
{
"case": "curses",
- "type": "303"
+ "type": "305"
},
{
"case": "egl-headless",
- "type": "304"
+ "type": "306"
},
{
"case": "default",
@@ -12932,7 +14015,7 @@
"members": [
{
"name": "type",
- "type": "300"
+ "type": "302"
},
{
"name": "full-screen",
@@ -12947,33 +14030,33 @@
{
"name": "gl",
"default": null,
- "type": "301"
+ "type": "303"
}
],
"meta-type": "object"
},
{
- "name": "122",
+ "name": "126",
"members": [
{
"name": "status",
"default": null,
- "type": "305"
+ "type": "307"
},
{
"name": "ram",
"default": null,
- "type": "306"
+ "type": "308"
},
{
"name": "disk",
"default": null,
- "type": "306"
+ "type": "308"
},
{
"name": "xbzrle-cache",
"default": null,
- "type": "307"
+ "type": "309"
},
{
"name": "total-time",
@@ -13018,37 +14101,37 @@
{
"name": "compression",
"default": null,
- "type": "308"
+ "type": "310"
},
{
"name": "socket-address",
"default": null,
- "type": "[309]"
+ "type": "[311]"
}
],
"meta-type": "object"
},
{
- "name": "123",
+ "name": "127",
"members": [
{
"name": "capabilities",
- "type": "[124]"
+ "type": "[128]"
}
],
"meta-type": "object"
},
{
- "name": "[124]",
- "element-type": "124",
+ "name": "[128]",
+ "element-type": "128",
"meta-type": "array"
},
{
- "name": "124",
+ "name": "128",
"members": [
{
"name": "capability",
- "type": "310"
+ "type": "312"
},
{
"name": "state",
@@ -13058,7 +14141,7 @@
"meta-type": "object"
},
{
- "name": "125",
+ "name": "129",
"members": [
{
"name": "announce-initial",
@@ -13169,7 +14252,7 @@
"meta-type": "object"
},
{
- "name": "126",
+ "name": "130",
"members": [
{
"name": "announce-initial",
@@ -13280,7 +14363,7 @@
"meta-type": "object"
},
{
- "name": "127",
+ "name": "131",
"members": [
{
"name": "protocol",
@@ -13309,17 +14392,17 @@
"meta-type": "object"
},
{
- "name": "128",
+ "name": "132",
"members": [
{
"name": "status",
- "type": "305"
+ "type": "307"
}
],
"meta-type": "object"
},
{
- "name": "129",
+ "name": "133",
"members": [
{
"name": "pass",
@@ -13329,31 +14412,31 @@
"meta-type": "object"
},
{
- "name": "130",
+ "name": "134",
"members": [
{
"name": "mode",
- "type": "311"
+ "type": "313"
},
{
"name": "reason",
- "type": "312"
+ "type": "314"
}
],
"meta-type": "object"
},
{
- "name": "131",
+ "name": "135",
"members": [
{
"name": "state",
- "type": "305"
+ "type": "307"
}
],
"meta-type": "object"
},
{
- "name": "132",
+ "name": "136",
"members": [
{
"name": "value",
@@ -13363,7 +14446,7 @@
"meta-type": "object"
},
{
- "name": "133",
+ "name": "137",
"members": [
{
"name": "value",
@@ -13373,7 +14456,7 @@
"meta-type": "object"
},
{
- "name": "134",
+ "name": "138",
"members": [
{
"name": "value",
@@ -13388,7 +14471,7 @@
"meta-type": "builtin"
},
{
- "name": "135",
+ "name": "139",
"members": [
{
"name": "uri",
@@ -13418,7 +14501,7 @@
"meta-type": "object"
},
{
- "name": "136",
+ "name": "140",
"members": [
{
"name": "uri",
@@ -13428,7 +14511,7 @@
"meta-type": "object"
},
{
- "name": "137",
+ "name": "141",
"members": [
{
"name": "filename",
@@ -13443,7 +14526,7 @@
"meta-type": "object"
},
{
- "name": "138",
+ "name": "142",
"members": [
{
"name": "enable",
@@ -13462,7 +14545,7 @@
"meta-type": "object"
},
{
- "name": "139",
+ "name": "143",
"members": [
{
"name": "error",
@@ -13477,25 +14560,25 @@
"meta-type": "object"
},
{
- "name": "140",
+ "name": "144",
"members": [
{
"name": "mode",
- "type": "311"
+ "type": "313"
},
{
"name": "last-mode",
- "type": "311"
+ "type": "313"
},
{
"name": "reason",
- "type": "312"
+ "type": "314"
}
],
"meta-type": "object"
},
{
- "name": "141",
+ "name": "145",
"members": [
{
"name": "uri",
@@ -13505,22 +14588,22 @@
"meta-type": "object"
},
{
- "name": "142",
+ "name": "146",
"members": [
{
"name": "actions",
- "type": "[313]"
+ "type": "[315]"
},
{
"name": "properties",
"default": null,
- "type": "314"
+ "type": "316"
}
],
"meta-type": "object"
},
{
- "name": "143",
+ "name": "147",
"members": [
{
"name": "name",
@@ -13535,12 +14618,12 @@
"meta-type": "object"
},
{
- "name": "[144]",
- "element-type": "144",
+ "name": "[148]",
+ "element-type": "148",
"meta-type": "array"
},
{
- "name": "144",
+ "name": "148",
"members": [
{
"name": "name",
@@ -13548,7 +14631,7 @@
},
{
"name": "state",
- "type": "315"
+ "type": "317"
},
{
"name": "vcpu",
@@ -13558,7 +14641,7 @@
"meta-type": "object"
},
{
- "name": "145",
+ "name": "149",
"members": [
{
"name": "name",
@@ -13582,41 +14665,41 @@
"meta-type": "object"
},
{
- "name": "[146]",
- "element-type": "146",
+ "name": "[150]",
+ "element-type": "150",
"meta-type": "array"
},
{
- "name": "146",
+ "name": "150",
"tag": "meta-type",
"variants": [
{
"case": "builtin",
- "type": "317"
+ "type": "319"
},
{
"case": "enum",
- "type": "318"
+ "type": "320"
},
{
"case": "array",
- "type": "319"
+ "type": "321"
},
{
"case": "object",
- "type": "320"
+ "type": "322"
},
{
"case": "alternate",
- "type": "321"
+ "type": "323"
},
{
"case": "command",
- "type": "322"
+ "type": "324"
},
{
"case": "event",
- "type": "323"
+ "type": "325"
}
],
"members": [
@@ -13626,132 +14709,224 @@
},
{
"name": "meta-type",
- "type": "316"
+ "type": "318"
}
],
"meta-type": "object"
},
{
- "name": "147",
+ "name": "151",
"members": [
{
- "name": "enable",
+ "name": "path",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[152]",
+ "element-type": "152",
+ "meta-type": "array"
+ },
+ {
+ "name": "152",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "type",
+ "type": "str"
+ },
+ {
+ "name": "description",
"default": null,
- "type": "[324]"
+ "type": "str"
}
],
"meta-type": "object"
},
{
- "name": "148",
+ "name": "153",
"members": [
{
- "name": "qemu",
- "type": "325"
+ "name": "path",
+ "type": "str"
},
{
- "name": "package",
+ "name": "property",
"type": "str"
}
],
"meta-type": "object"
},
{
- "name": "[149]",
- "element-type": "149",
- "meta-type": "array"
+ "name": "any",
+ "json-type": "value",
+ "meta-type": "builtin"
},
{
- "name": "149",
+ "name": "154",
"members": [
{
- "name": "name",
+ "name": "path",
+ "type": "str"
+ },
+ {
+ "name": "property",
"type": "str"
+ },
+ {
+ "name": "value",
+ "type": "any"
}
],
"meta-type": "object"
},
{
- "name": "150",
+ "name": "155",
"members": [
{
- "name": "protocol",
+ "name": "implements",
+ "default": null,
"type": "str"
},
{
- "name": "fdname",
+ "name": "abstract",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[156]",
+ "element-type": "156",
+ "meta-type": "array"
+ },
+ {
+ "name": "156",
+ "members": [
+ {
+ "name": "name",
"type": "str"
},
{
- "name": "skipauth",
+ "name": "abstract",
"default": null,
"type": "bool"
},
{
- "name": "tls",
+ "name": "parent",
"default": null,
- "type": "bool"
+ "type": "str"
}
],
"meta-type": "object"
},
{
- "name": "151",
+ "name": "157",
"members": [
{
- "name": "name",
- "default": null,
+ "name": "typename",
"type": "str"
}
],
"meta-type": "object"
},
{
- "name": "152",
+ "name": "158",
"members": [
{
- "name": "enabled",
- "type": "bool"
+ "name": "qom-type",
+ "type": "str"
},
{
- "name": "present",
- "type": "bool"
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "props",
+ "default": null,
+ "type": "any"
}
],
"meta-type": "object"
},
{
- "name": "153",
+ "name": "159",
"members": [
{
- "name": "UUID",
+ "name": "id",
"type": "str"
}
],
"meta-type": "object"
},
{
- "name": "[154]",
- "element-type": "154",
- "meta-type": "array"
+ "name": "160",
+ "members": [
+ {
+ "name": "typename",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
},
{
- "name": "154",
+ "name": "161",
"members": [
{
- "name": "name",
+ "name": "driver",
+ "type": "str"
+ },
+ {
+ "name": "bus",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "162",
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "163",
+ "members": [
+ {
+ "name": "device",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "path",
"type": "str"
}
],
"meta-type": "object"
},
{
- "name": "[155]",
- "element-type": "155",
+ "name": "[164]",
+ "element-type": "164",
"meta-type": "array"
},
{
- "name": "155",
+ "name": "164",
"tag": "arch",
"variants": [
{
@@ -13821,12 +14996,12 @@
"meta-type": "object"
},
{
- "name": "[156]",
- "element-type": "156",
+ "name": "[165]",
+ "element-type": "165",
"meta-type": "array"
},
{
- "name": "156",
+ "name": "165",
"tag": "target",
"variants": [
{
@@ -13984,179 +15159,215 @@
"meta-type": "object"
},
{
- "name": "[157]",
- "element-type": "157",
+ "name": "166",
+ "members": [
+ {
+ "name": "id",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[167]",
+ "element-type": "167",
"meta-type": "array"
},
{
- "name": "157",
+ "name": "167",
"members": [
{
- "name": "id",
+ "name": "name",
"type": "str"
},
{
- "name": "thread-id",
- "type": "int"
- },
+ "name": "alias",
+ "default": null,
+ "type": "str"
+ },
{
- "name": "poll-max-ns",
- "type": "int"
+ "name": "is-default",
+ "default": null,
+ "type": "bool"
},
{
- "name": "poll-grow",
+ "name": "cpu-max",
"type": "int"
},
{
- "name": "poll-shrink",
- "type": "int"
- }
- ],
- "meta-type": "object"
- },
- {
- "name": "158",
- "members": [
+ "name": "hotpluggable-cpus",
+ "type": "bool"
+ },
{
- "name": "actual",
- "type": "int"
+ "name": "numa-mem-supported",
+ "type": "bool"
+ },
+ {
+ "name": "deprecated",
+ "type": "bool"
}
],
"meta-type": "object"
},
{
- "name": "159",
+ "name": "168",
"members": [
{
- "name": "actual",
- "type": "int"
+ "name": "wakeup-suspend-support",
+ "type": "bool"
}
],
"meta-type": "object"
},
{
- "name": "[160]",
- "element-type": "160",
+ "name": "[169]",
+ "element-type": "169",
"meta-type": "array"
},
{
- "name": "160",
+ "name": "169",
"members": [
{
- "name": "bus",
+ "name": "id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "size",
"type": "int"
},
{
- "name": "devices",
- "type": "[336]"
+ "name": "merge",
+ "type": "bool"
+ },
+ {
+ "name": "dump",
+ "type": "bool"
+ },
+ {
+ "name": "prealloc",
+ "type": "bool"
+ },
+ {
+ "name": "host-nodes",
+ "type": "[int]"
+ },
+ {
+ "name": "policy",
+ "type": "336"
}
],
"meta-type": "object"
},
{
- "name": "161",
- "members": [
- {
- "name": "id",
- "type": "int"
- }
- ],
- "meta-type": "object"
+ "name": "[170]",
+ "element-type": "170",
+ "meta-type": "array"
},
{
- "name": "162",
+ "name": "170",
"members": [
{
- "name": "val",
- "type": "int"
+ "name": "type",
+ "type": "str"
},
{
- "name": "size",
+ "name": "vcpus-count",
"type": "int"
},
{
- "name": "filename",
- "type": "str"
+ "name": "props",
+ "type": "326"
},
{
- "name": "cpu-index",
+ "name": "qom-path",
"default": null,
- "type": "int"
+ "type": "str"
}
],
"meta-type": "object"
},
{
- "name": "163",
- "members": [
+ "name": "171",
+ "tag": "type",
+ "variants": [
{
- "name": "val",
- "type": "int"
+ "case": "node",
+ "type": "338"
},
{
- "name": "size",
- "type": "int"
+ "case": "dist",
+ "type": "339"
},
{
- "name": "filename",
- "type": "str"
+ "case": "cpu",
+ "type": "340"
}
],
- "meta-type": "object"
- },
- {
- "name": "164",
"members": [
{
- "name": "value",
- "type": "int"
+ "name": "type",
+ "type": "337"
}
],
"meta-type": "object"
},
{
- "name": "165",
+ "name": "176",
"members": [
{
- "name": "command-line",
- "type": "str"
+ "name": "type",
+ "type": "343"
},
{
- "name": "cpu-index",
- "default": null,
- "type": "int"
+ "name": "model",
+ "type": "341"
}
],
"meta-type": "object"
},
{
- "name": "166",
+ "name": "177",
"members": [
{
- "name": "path",
- "type": "str"
+ "name": "model",
+ "type": "341"
}
],
"meta-type": "object"
},
{
- "name": "[167]",
- "element-type": "167",
+ "name": "[178]",
+ "element-type": "178",
"meta-type": "array"
},
{
- "name": "167",
+ "name": "178",
"members": [
{
"name": "name",
"type": "str"
},
{
- "name": "type",
+ "name": "migration-safe",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "static",
+ "type": "bool"
+ },
+ {
+ "name": "unavailable-features",
+ "default": null,
+ "type": "[str]"
+ },
+ {
+ "name": "typename",
"type": "str"
},
{
- "name": "description",
+ "name": "alias-of",
"default": null,
"type": "str"
}
@@ -14164,348 +15375,306 @@
"meta-type": "object"
},
{
- "name": "168",
+ "name": "179",
"members": [
{
- "name": "path",
- "type": "str"
+ "name": "enable",
+ "default": null,
+ "type": "[344]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "180",
+ "members": [
+ {
+ "name": "qemu",
+ "type": "345"
},
{
- "name": "property",
+ "name": "package",
"type": "str"
}
],
"meta-type": "object"
},
{
- "name": "any",
- "json-type": "value",
- "meta-type": "builtin"
+ "name": "[181]",
+ "element-type": "181",
+ "meta-type": "array"
},
{
- "name": "169",
+ "name": "181",
"members": [
{
- "name": "path",
- "type": "str"
- },
- {
- "name": "property",
+ "name": "name",
"type": "str"
- },
- {
- "name": "value",
- "type": "any"
}
],
"meta-type": "object"
},
{
- "name": "170",
+ "name": "182",
"members": [
{
- "name": "device",
+ "name": "protocol",
"type": "str"
},
{
- "name": "target",
+ "name": "fdname",
"type": "str"
},
{
- "name": "arg",
+ "name": "skipauth",
"default": null,
- "type": "str"
+ "type": "bool"
+ },
+ {
+ "name": "tls",
+ "default": null,
+ "type": "bool"
}
],
"meta-type": "object"
},
{
- "name": "171",
+ "name": "183",
"members": [
{
- "name": "implements",
+ "name": "name",
"default": null,
"type": "str"
- },
- {
- "name": "abstract",
- "default": null,
- "type": "bool"
}
],
"meta-type": "object"
},
{
- "name": "[172]",
- "element-type": "172",
- "meta-type": "array"
- },
- {
- "name": "172",
+ "name": "184",
"members": [
{
- "name": "name",
- "type": "str"
- },
- {
- "name": "abstract",
- "default": null,
+ "name": "enabled",
"type": "bool"
},
{
- "name": "parent",
- "default": null,
- "type": "str"
+ "name": "present",
+ "type": "bool"
}
],
"meta-type": "object"
},
{
- "name": "173",
+ "name": "185",
"members": [
{
- "name": "typename",
+ "name": "UUID",
"type": "str"
}
],
"meta-type": "object"
},
{
- "name": "174",
+ "name": "[186]",
+ "element-type": "186",
+ "meta-type": "array"
+ },
+ {
+ "name": "186",
"members": [
{
- "name": "typename",
+ "name": "name",
"type": "str"
}
],
"meta-type": "object"
},
{
- "name": "175",
- "members": [
- {
- "name": "enable",
- "type": "bool"
- }
- ],
- "meta-type": "object"
+ "name": "[187]",
+ "element-type": "187",
+ "meta-type": "array"
},
{
- "name": "176",
+ "name": "187",
"members": [
{
- "name": "driver",
+ "name": "id",
"type": "str"
},
{
- "name": "bus",
- "default": null,
- "type": "str"
+ "name": "thread-id",
+ "type": "int"
},
{
- "name": "id",
- "default": null,
- "type": "str"
- }
- ],
- "meta-type": "object"
+ "name": "poll-max-ns",
+ "type": "int"
+ },
+ {
+ "name": "poll-grow",
+ "type": "int"
+ },
+ {
+ "name": "poll-shrink",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
},
{
- "name": "177",
+ "name": "188",
"members": [
{
- "name": "id",
- "type": "str"
+ "name": "actual",
+ "type": "int"
}
],
"meta-type": "object"
},
{
- "name": "178",
+ "name": "189",
"members": [
{
- "name": "device",
- "default": null,
- "type": "str"
- },
- {
- "name": "path",
- "type": "str"
+ "name": "actual",
+ "type": "int"
}
],
"meta-type": "object"
},
{
- "name": "179",
+ "name": "[190]",
+ "element-type": "190",
+ "meta-type": "array"
+ },
+ {
+ "name": "190",
"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,
+ "name": "bus",
"type": "int"
},
{
- "name": "format",
- "default": null,
- "type": "337"
+ "name": "devices",
+ "type": "[346]"
}
],
"meta-type": "object"
},
{
- "name": "180",
+ "name": "191",
"members": [
{
- "name": "status",
- "type": "338"
+ "name": "val",
+ "type": "int"
},
{
- "name": "completed",
+ "name": "size",
"type": "int"
},
{
- "name": "total",
+ "name": "filename",
+ "type": "str"
+ },
+ {
+ "name": "cpu-index",
+ "default": null,
"type": "int"
}
],
"meta-type": "object"
},
{
- "name": "181",
+ "name": "192",
"members": [
{
- "name": "result",
- "type": "180"
+ "name": "val",
+ "type": "int"
},
{
- "name": "error",
- "default": null,
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "filename",
"type": "str"
}
],
"meta-type": "object"
},
{
- "name": "182",
+ "name": "193",
"members": [
{
- "name": "formats",
- "type": "[337]"
+ "name": "value",
+ "type": "int"
}
],
"meta-type": "object"
},
{
- "name": "183",
+ "name": "194",
"members": [
{
- "name": "qom-type",
- "type": "str"
- },
- {
- "name": "id",
+ "name": "command-line",
"type": "str"
},
{
- "name": "props",
+ "name": "cpu-index",
"default": null,
- "type": "any"
+ "type": "int"
}
],
"meta-type": "object"
},
{
- "name": "184",
+ "name": "195",
"members": [
{
- "name": "id",
+ "name": "device",
"type": "str"
- }
- ],
- "meta-type": "object"
- },
- {
- "name": "185",
- "members": [
+ },
{
- "name": "fdname",
+ "name": "target",
+ "type": "str"
+ },
+ {
+ "name": "arg",
+ "default": null,
"type": "str"
}
],
"meta-type": "object"
},
{
- "name": "186",
+ "name": "196",
"members": [
{
- "name": "fdname",
- "type": "str"
+ "name": "enable",
+ "type": "bool"
}
],
"meta-type": "object"
},
{
- "name": "[187]",
- "element-type": "187",
- "meta-type": "array"
- },
- {
- "name": "187",
+ "name": "197",
"members": [
{
- "name": "name",
- "type": "str"
- },
- {
- "name": "alias",
- "default": null,
+ "name": "fdname",
"type": "str"
- },
- {
- "name": "is-default",
- "default": null,
- "type": "bool"
- },
- {
- "name": "cpu-max",
- "type": "int"
- },
- {
- "name": "hotpluggable-cpus",
- "type": "bool"
}
],
"meta-type": "object"
},
{
- "name": "188",
+ "name": "198",
"members": [
{
- "name": "wakeup-suspend-support",
- "type": "bool"
+ "name": "fdname",
+ "type": "str"
}
],
"meta-type": "object"
},
{
- "name": "189",
+ "name": "199",
"members": [
{
"name": "base-memory",
@@ -14520,7 +15689,7 @@
"meta-type": "object"
},
{
- "name": "190",
+ "name": "200",
"members": [
{
"name": "fdset-id",
@@ -14536,7 +15705,7 @@
"meta-type": "object"
},
{
- "name": "191",
+ "name": "201",
"members": [
{
"name": "fdset-id",
@@ -14550,7 +15719,7 @@
"meta-type": "object"
},
{
- "name": "192",
+ "name": "202",
"members": [
{
"name": "fdset-id",
@@ -14565,12 +15734,12 @@
"meta-type": "object"
},
{
- "name": "[193]",
- "element-type": "193",
+ "name": "[203]",
+ "element-type": "203",
"meta-type": "array"
},
{
- "name": "193",
+ "name": "203",
"members": [
{
"name": "fdset-id",
@@ -14578,13 +15747,13 @@
},
{
"name": "fds",
- "type": "[339]"
+ "type": "[347]"
}
],
"meta-type": "object"
},
{
- "name": "194",
+ "name": "204",
"members": [
{
"name": "arch",
@@ -14594,7 +15763,7 @@
"meta-type": "object"
},
{
- "name": "195",
+ "name": "205",
"members": [
{
"name": "option",
@@ -14605,12 +15774,12 @@
"meta-type": "object"
},
{
- "name": "[196]",
- "element-type": "196",
+ "name": "[206]",
+ "element-type": "206",
"meta-type": "array"
},
{
- "name": "196",
+ "name": "206",
"members": [
{
"name": "option",
@@ -14618,79 +15787,43 @@
},
{
"name": "parameters",
- "type": "[340]"
- }
- ],
- "meta-type": "object"
- },
- {
- "name": "[197]",
- "element-type": "197",
- "meta-type": "array"
- },
- {
- "name": "197",
- "members": [
- {
- "name": "id",
- "default": null,
- "type": "str"
- },
- {
- "name": "size",
- "type": "int"
- },
- {
- "name": "merge",
- "type": "bool"
- },
- {
- "name": "dump",
- "type": "bool"
- },
- {
- "name": "prealloc",
- "type": "bool"
- },
- {
- "name": "host-nodes",
- "type": "[int]"
- },
- {
- "name": "policy",
- "type": "341"
+ "type": "[348]"
}
],
"meta-type": "object"
},
{
- "name": "[198]",
- "element-type": "198",
+ "name": "[207]",
+ "element-type": "207",
"meta-type": "array"
},
{
- "name": "198",
+ "name": "207",
"tag": "type",
"variants": [
{
"case": "dimm",
- "type": "343"
+ "type": "350"
},
{
"case": "nvdimm",
- "type": "343"
+ "type": "350"
+ },
+ {
+ "case": "virtio-pmem",
+ "type": "351"
}
],
"members": [
{
"name": "type",
- "type": "342"
+ "type": "349"
}
],
"meta-type": "object"
},
{
- "name": "199",
+ "name": "208",
"members": [
{
"name": "device",
@@ -14704,12 +15837,12 @@
"meta-type": "object"
},
{
- "name": "[200]",
- "element-type": "200",
+ "name": "[209]",
+ "element-type": "209",
"meta-type": "array"
},
{
- "name": "200",
+ "name": "209",
"members": [
{
"name": "device",
@@ -14722,7 +15855,7 @@
},
{
"name": "slot-type",
- "type": "344"
+ "type": "352"
},
{
"name": "source",
@@ -14736,17 +15869,17 @@
"meta-type": "object"
},
{
- "name": "201",
+ "name": "210",
"members": [
{
"name": "info",
- "type": "200"
+ "type": "209"
}
],
"meta-type": "object"
},
{
- "name": "202",
+ "name": "211",
"members": [
{
"name": "filename",
@@ -14756,70 +15889,17 @@
"meta-type": "object"
},
{
- "name": "[203]",
- "element-type": "203",
- "meta-type": "array"
- },
- {
- "name": "203",
+ "name": "212",
"members": [
{
- "name": "type",
- "type": "str"
- },
- {
- "name": "vcpus-count",
- "type": "int"
- },
- {
- "name": "props",
- "type": "326"
- },
- {
- "name": "qom-path",
- "default": null,
+ "name": "guid",
"type": "str"
}
],
"meta-type": "object"
},
{
- "name": "204",
- "members": [
- {
- "name": "guid",
- "type": "str"
- }
- ],
- "meta-type": "object"
- },
- {
- "name": "205",
- "tag": "type",
- "variants": [
- {
- "case": "node",
- "type": "346"
- },
- {
- "case": "dist",
- "type": "347"
- },
- {
- "case": "cpu",
- "type": "348"
- }
- ],
- "members": [
- {
- "name": "type",
- "type": "345"
- }
- ],
- "meta-type": "object"
- },
- {
- "name": "206",
+ "name": "213",
"members": [
{
"name": "offset",
@@ -14829,7 +15909,7 @@
"meta-type": "object"
},
{
- "name": "207",
+ "name": "214",
"members": [
{
"name": "enabled",
@@ -14853,7 +15933,7 @@
},
{
"name": "state",
- "type": "349"
+ "type": "353"
},
{
"name": "handle",
@@ -14863,7 +15943,7 @@
"meta-type": "object"
},
{
- "name": "208",
+ "name": "215",
"members": [
{
"name": "data",
@@ -14873,7 +15953,7 @@
"meta-type": "object"
},
{
- "name": "209",
+ "name": "216",
"members": [
{
"name": "pdh",
@@ -14894,63 +15974,6 @@
],
"meta-type": "object"
},
- {
- "name": "216",
- "members": [
- {
- "name": "type",
- "type": "352"
- },
- {
- "name": "model",
- "type": "350"
- }
- ],
- "meta-type": "object"
- },
- {
- "name": "217",
- "members": [
- {
- "name": "model",
- "type": "350"
- }
- ],
- "meta-type": "object"
- },
- {
- "name": "[218]",
- "element-type": "218",
- "meta-type": "array"
- },
- {
- "name": "218",
- "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"
- }
- ],
- "meta-type": "object"
- },
{
"name": "bool",
"json-type": "boolean",
@@ -15022,17 +16045,17 @@
"variants": [
{
"case": "hyper-v",
- "type": "354"
+ "type": "355"
},
{
"case": "s390",
- "type": "355"
+ "type": "356"
}
],
"members": [
{
"name": "type",
- "type": "353"
+ "type": "354"
}
],
"meta-type": "object"
@@ -15110,7 +16133,7 @@
},
{
"name": "status",
- "type": "356"
+ "type": "357"
},
{
"name": "persistent",
@@ -15210,22 +16233,22 @@
},
{
"name": "timed_stats",
- "type": "[357]"
+ "type": "[358]"
},
{
"name": "rd_latency_histogram",
"default": null,
- "type": "358"
+ "type": "359"
},
{
"name": "wr_latency_histogram",
"default": null,
- "type": "358"
+ "type": "359"
},
{
"name": "flush_latency_histogram",
"default": null,
- "type": "358"
+ "type": "359"
}
],
"meta-type": "object"
@@ -15336,7 +16359,7 @@
{
"name": "format-specific",
"default": null,
- "type": "359"
+ "type": "360"
}
],
"meta-type": "object"
@@ -15373,7 +16396,7 @@
},
{
"name": "type",
- "type": "360"
+ "type": "361"
},
{
"name": "name",
@@ -15404,11 +16427,11 @@
},
{
"name": "perm",
- "type": "[361]"
+ "type": "[362]"
},
{
"name": "shared-perm",
- "type": "[361]"
+ "type": "[362]"
}
],
"meta-type": "object"
@@ -15512,7 +16535,7 @@
"members": [
{
"name": "image",
- "type": "362"
+ "type": "363"
},
{
"name": "config",
@@ -15552,12 +16575,12 @@
{
"name": "inject-error",
"default": null,
- "type": "[363]"
+ "type": "[364]"
},
{
"name": "set-state",
"default": null,
- "type": "[364]"
+ "type": "[365]"
}
],
"meta-type": "object"
@@ -15567,11 +16590,11 @@
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "log",
- "type": "362"
+ "type": "363"
},
{
"name": "log-sector-size",
@@ -15596,11 +16619,11 @@
"members": [
{
"name": "test",
- "type": "362"
+ "type": "363"
},
{
"name": "raw",
- "type": "362"
+ "type": "363"
}
],
"meta-type": "object"
@@ -15610,7 +16633,7 @@
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
}
],
"meta-type": "object"
@@ -15630,12 +16653,12 @@
{
"name": "locking",
"default": null,
- "type": "365"
+ "type": "366"
},
{
"name": "aio",
"default": null,
- "type": "366"
+ "type": "367"
},
{
"name": "drop-cache",
@@ -15751,7 +16774,7 @@
},
{
"name": "server",
- "type": "[309]"
+ "type": "[311]"
},
{
"name": "debug",
@@ -15876,7 +16899,7 @@
"members": [
{
"name": "transport",
- "type": "367"
+ "type": "368"
},
{
"name": "portal",
@@ -15909,7 +16932,7 @@
{
"name": "header-digest",
"default": null,
- "type": "368"
+ "type": "369"
},
{
"name": "timeout",
@@ -15924,7 +16947,7 @@
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "key-secret",
@@ -15939,7 +16962,7 @@
"members": [
{
"name": "server",
- "type": "309"
+ "type": "311"
},
{
"name": "export",
@@ -15964,7 +16987,7 @@
"members": [
{
"name": "server",
- "type": "369"
+ "type": "370"
},
{
"name": "path",
@@ -16043,12 +17066,12 @@
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "backing",
"default": null,
- "type": "370"
+ "type": "371"
},
{
"name": "lazy-refcounts",
@@ -16073,7 +17096,7 @@
{
"name": "overlap-check",
"default": null,
- "type": "371"
+ "type": "372"
},
{
"name": "cache-size",
@@ -16103,12 +17126,12 @@
{
"name": "encrypt",
"default": null,
- "type": "372"
+ "type": "373"
},
{
"name": "data-file",
"default": null,
- "type": "362"
+ "type": "363"
}
],
"meta-type": "object"
@@ -16118,17 +17141,17 @@
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "backing",
"default": null,
- "type": "370"
+ "type": "371"
},
{
"name": "encrypt",
"default": null,
- "type": "373"
+ "type": "374"
}
],
"meta-type": "object"
@@ -16138,12 +17161,12 @@
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "backing",
"default": null,
- "type": "370"
+ "type": "371"
}
],
"meta-type": "object"
@@ -16158,7 +17181,7 @@
},
{
"name": "children",
- "type": "[362]"
+ "type": "[363]"
},
{
"name": "vote-threshold",
@@ -16172,7 +17195,7 @@
{
"name": "read-pattern",
"default": null,
- "type": "374"
+ "type": "375"
}
],
"meta-type": "object"
@@ -16182,7 +17205,7 @@
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "offset",
@@ -16226,7 +17249,7 @@
{
"name": "auth-client-required",
"default": null,
- "type": "[375]"
+ "type": "[376]"
},
{
"name": "key-secret",
@@ -16236,7 +17259,7 @@
{
"name": "server",
"default": null,
- "type": "[376]"
+ "type": "[377]"
}
],
"meta-type": "object"
@@ -16246,11 +17269,11 @@
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "mode",
- "type": "377"
+ "type": "378"
},
{
"name": "top-id",
@@ -16265,7 +17288,7 @@
"members": [
{
"name": "server",
- "type": "309"
+ "type": "311"
},
{
"name": "vdi",
@@ -16289,7 +17312,7 @@
"members": [
{
"name": "server",
- "type": "378"
+ "type": "379"
},
{
"name": "path",
@@ -16303,7 +17326,7 @@
{
"name": "host-key-check",
"default": null,
- "type": "379"
+ "type": "380"
}
],
"meta-type": "object"
@@ -16317,7 +17340,7 @@
},
{
"name": "file",
- "type": "362"
+ "type": "363"
}
],
"meta-type": "object"
@@ -16361,7 +17384,7 @@
},
{
"name": "server",
- "type": "376"
+ "type": "377"
},
{
"name": "tls-creds",
@@ -16377,63 +17400,63 @@
"variants": [
{
"case": "file",
- "type": "380"
+ "type": "381"
},
{
"case": "gluster",
- "type": "381"
+ "type": "382"
},
{
"case": "luks",
- "type": "382"
+ "type": "383"
},
{
"case": "nfs",
- "type": "383"
+ "type": "384"
},
{
"case": "parallels",
- "type": "384"
+ "type": "385"
},
{
"case": "qcow",
- "type": "385"
+ "type": "386"
},
{
"case": "qcow2",
- "type": "386"
+ "type": "387"
},
{
"case": "qed",
- "type": "387"
+ "type": "388"
},
{
"case": "rbd",
- "type": "388"
+ "type": "389"
},
{
"case": "sheepdog",
- "type": "389"
+ "type": "390"
},
{
"case": "ssh",
- "type": "390"
+ "type": "391"
},
{
"case": "vdi",
- "type": "391"
+ "type": "392"
},
{
"case": "vhdx",
- "type": "392"
+ "type": "393"
},
{
"case": "vmdk",
- "type": "393"
+ "type": "394"
},
{
"case": "vpc",
- "type": "394"
+ "type": "395"
},
{
"case": "blkdebug",
@@ -16584,25 +17607,25 @@
"variants": [
{
"case": "inet",
- "type": "396"
+ "type": "397"
},
{
"case": "unix",
- "type": "397"
+ "type": "398"
},
{
"case": "vsock",
- "type": "398"
+ "type": "399"
},
{
"case": "fd",
- "type": "399"
+ "type": "400"
}
],
"members": [
{
"name": "type",
- "type": "395"
+ "type": "396"
}
],
"meta-type": "object"
@@ -16638,89 +17661,89 @@
"variants": [
{
"case": "file",
- "type": "401"
+ "type": "402"
},
{
"case": "serial",
- "type": "402"
+ "type": "403"
},
{
"case": "parallel",
- "type": "402"
+ "type": "403"
},
{
"case": "pipe",
- "type": "402"
+ "type": "403"
},
{
"case": "socket",
- "type": "403"
+ "type": "404"
},
{
"case": "udp",
- "type": "404"
+ "type": "405"
},
{
"case": "pty",
- "type": "405"
+ "type": "406"
},
{
"case": "null",
- "type": "405"
+ "type": "406"
},
{
"case": "mux",
- "type": "406"
+ "type": "407"
},
{
"case": "msmouse",
- "type": "405"
+ "type": "406"
},
{
"case": "wctablet",
- "type": "405"
+ "type": "406"
},
{
"case": "braille",
- "type": "405"
+ "type": "406"
},
{
"case": "testdev",
- "type": "405"
+ "type": "406"
},
{
"case": "stdio",
- "type": "407"
+ "type": "408"
},
{
"case": "console",
- "type": "405"
+ "type": "406"
},
{
"case": "spicevmc",
- "type": "408"
+ "type": "409"
},
{
"case": "spiceport",
- "type": "409"
+ "type": "410"
},
{
"case": "vc",
- "type": "410"
+ "type": "411"
},
{
"case": "ringbuf",
- "type": "411"
+ "type": "412"
},
{
"case": "memory",
- "type": "411"
+ "type": "412"
}
],
"members": [
{
"name": "type",
- "type": "400"
+ "type": "401"
}
],
"meta-type": "object"
@@ -16728,6 +17751,32 @@
{
"name": "280",
"meta-type": "enum",
+ "values": [
+ "elf",
+ "kdump-zlib",
+ "kdump-lzo",
+ "kdump-snappy",
+ "win-dmp"
+ ]
+ },
+ {
+ "name": "281",
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "active",
+ "completed",
+ "failed"
+ ]
+ },
+ {
+ "name": "[280]",
+ "element-type": "280",
+ "meta-type": "array"
+ },
+ {
+ "name": "282",
+ "meta-type": "enum",
"values": [
"normal",
"none",
@@ -16740,7 +17789,7 @@
"meta-type": "array"
},
{
- "name": "281",
+ "name": "283",
"meta-type": "enum",
"values": [
"half",
@@ -16748,7 +17797,7 @@
]
},
{
- "name": "282",
+ "name": "284",
"meta-type": "enum",
"values": [
"off",
@@ -16756,7 +17805,7 @@
]
},
{
- "name": "283",
+ "name": "285",
"members": [
{
"name": "priority",
@@ -16815,7 +17864,7 @@
"meta-type": "object"
},
{
- "name": "284",
+ "name": "286",
"members": [
{
"name": "in-pport",
@@ -16856,7 +17905,7 @@
"meta-type": "object"
},
{
- "name": "285",
+ "name": "287",
"members": [
{
"name": "goto-tbl",
@@ -16892,28 +17941,28 @@
"meta-type": "object"
},
{
- "name": "286",
+ "name": "288",
"tag": "type",
"variants": [
{
"case": "passthrough",
- "type": "413"
+ "type": "414"
},
{
"case": "emulator",
- "type": "414"
+ "type": "415"
}
],
"members": [
{
"name": "type",
- "type": "412"
+ "type": "413"
}
],
"meta-type": "object"
},
{
- "name": "287",
+ "name": "289",
"meta-type": "enum",
"values": [
"client",
@@ -16922,12 +17971,12 @@
]
},
{
- "name": "[288]",
- "element-type": "288",
+ "name": "[290]",
+ "element-type": "290",
"meta-type": "array"
},
{
- "name": "288",
+ "name": "290",
"members": [
{
"name": "host",
@@ -16939,7 +17988,7 @@
},
{
"name": "family",
- "type": "291"
+ "type": "293"
},
{
"name": "connection-id",
@@ -16961,7 +18010,7 @@
"meta-type": "object"
},
{
- "name": "289",
+ "name": "291",
"members": [
{
"name": "host",
@@ -16973,13 +18022,13 @@
},
{
"name": "family",
- "type": "291"
+ "type": "293"
}
],
"meta-type": "object"
},
{
- "name": "290",
+ "name": "292",
"members": [
{
"name": "host",
@@ -16991,7 +18040,7 @@
},
{
"name": "family",
- "type": "291"
+ "type": "293"
},
{
"name": "auth",
@@ -17002,7 +18051,7 @@
"meta-type": "object"
},
{
- "name": "291",
+ "name": "293",
"meta-type": "enum",
"values": [
"ipv4",
@@ -17013,12 +18062,12 @@
]
},
{
- "name": "[292]",
- "element-type": "292",
+ "name": "[294]",
+ "element-type": "294",
"meta-type": "array"
},
{
- "name": "292",
+ "name": "294",
"members": [
{
"name": "host",
@@ -17030,7 +18079,7 @@
},
{
"name": "family",
- "type": "291"
+ "type": "293"
},
{
"name": "websocket",
@@ -17050,12 +18099,12 @@
"meta-type": "object"
},
{
- "name": "[293]",
- "element-type": "293",
+ "name": "[295]",
+ "element-type": "295",
"meta-type": "array"
},
{
- "name": "293",
+ "name": "295",
"members": [
{
"name": "host",
@@ -17067,7 +18116,7 @@
},
{
"name": "family",
- "type": "291"
+ "type": "293"
},
{
"name": "websocket",
@@ -17075,18 +18124,18 @@
},
{
"name": "auth",
- "type": "294"
+ "type": "296"
},
{
"name": "vencrypt",
"default": null,
- "type": "295"
+ "type": "297"
}
],
"meta-type": "object"
},
{
- "name": "294",
+ "name": "296",
"meta-type": "enum",
"values": [
"none",
@@ -17101,7 +18150,7 @@
]
},
{
- "name": "295",
+ "name": "297",
"meta-type": "enum",
"values": [
"plain",
@@ -17116,7 +18165,7 @@
]
},
{
- "name": "296",
+ "name": "298",
"members": [
{
"name": "host",
@@ -17128,7 +18177,7 @@
},
{
"name": "family",
- "type": "291"
+ "type": "293"
},
{
"name": "websocket",
@@ -17143,7 +18192,7 @@
"meta-type": "object"
},
{
- "name": "297",
+ "name": "299",
"members": [
{
"name": "host",
@@ -17155,7 +18204,7 @@
},
{
"name": "family",
- "type": "291"
+ "type": "293"
},
{
"name": "websocket",
@@ -17165,67 +18214,67 @@
"meta-type": "object"
},
{
- "name": "[298]",
- "element-type": "298",
+ "name": "[300]",
+ "element-type": "300",
"meta-type": "array"
},
{
- "name": "298",
+ "name": "300",
"tag": "type",
"variants": [
{
"case": "number",
- "type": "416"
+ "type": "417"
},
{
"case": "qcode",
- "type": "417"
+ "type": "418"
}
],
"members": [
{
"name": "type",
- "type": "415"
+ "type": "416"
}
],
"meta-type": "object"
},
{
- "name": "[299]",
- "element-type": "299",
+ "name": "[301]",
+ "element-type": "301",
"meta-type": "array"
},
{
- "name": "299",
+ "name": "301",
"tag": "type",
"variants": [
{
"case": "key",
- "type": "419"
+ "type": "420"
},
{
"case": "btn",
- "type": "420"
+ "type": "421"
},
{
"case": "rel",
- "type": "421"
+ "type": "422"
},
{
"case": "abs",
- "type": "421"
+ "type": "422"
}
],
"members": [
{
"name": "type",
- "type": "418"
+ "type": "419"
}
],
"meta-type": "object"
},
{
- "name": "300",
+ "name": "302",
"meta-type": "enum",
"values": [
"default",
@@ -17239,7 +18288,7 @@
]
},
{
- "name": "301",
+ "name": "303",
"meta-type": "enum",
"values": [
"off",
@@ -17249,7 +18298,7 @@
]
},
{
- "name": "302",
+ "name": "304",
"members": [
{
"name": "grab-on-hover",
@@ -17265,7 +18314,7 @@
"meta-type": "object"
},
{
- "name": "303",
+ "name": "305",
"members": [
{
"name": "charset",
@@ -17276,7 +18325,7 @@
"meta-type": "object"
},
{
- "name": "304",
+ "name": "306",
"members": [
{
"name": "rendernode",
@@ -17287,7 +18336,7 @@
"meta-type": "object"
},
{
- "name": "305",
+ "name": "307",
"meta-type": "enum",
"values": [
"none",
@@ -17306,7 +18355,7 @@
]
},
{
- "name": "306",
+ "name": "308",
"members": [
{
"name": "transferred",
@@ -17368,7 +18417,7 @@
"meta-type": "object"
},
{
- "name": "307",
+ "name": "309",
"members": [
{
"name": "cache-size",
@@ -17398,7 +18447,7 @@
"meta-type": "object"
},
{
- "name": "308",
+ "name": "310",
"members": [
{
"name": "pages",
@@ -17424,41 +18473,41 @@
"meta-type": "object"
},
{
- "name": "[309]",
- "element-type": "309",
+ "name": "[311]",
+ "element-type": "311",
"meta-type": "array"
},
{
- "name": "309",
+ "name": "311",
"tag": "type",
"variants": [
{
"case": "inet",
- "type": "378"
+ "type": "379"
},
{
"case": "unix",
- "type": "423"
+ "type": "424"
},
{
"case": "vsock",
- "type": "424"
+ "type": "425"
},
{
"case": "fd",
- "type": "425"
+ "type": "426"
}
],
"members": [
{
"name": "type",
- "type": "422"
+ "type": "423"
}
],
"meta-type": "object"
},
{
- "name": "310",
+ "name": "312",
"meta-type": "enum",
"values": [
"xbzrle",
@@ -17481,7 +18530,7 @@
]
},
{
- "name": "311",
+ "name": "313",
"meta-type": "enum",
"values": [
"none",
@@ -17490,7 +18539,7 @@
]
},
{
- "name": "312",
+ "name": "314",
"meta-type": "enum",
"values": [
"none",
@@ -17505,80 +18554,80 @@
"meta-type": "builtin"
},
{
- "name": "[313]",
- "element-type": "313",
+ "name": "[315]",
+ "element-type": "315",
"meta-type": "array"
},
{
- "name": "313",
+ "name": "315",
"tag": "type",
"variants": [
{
"case": "abort",
- "type": "427"
+ "type": "428"
},
{
"case": "block-dirty-bitmap-add",
- "type": "428"
+ "type": "429"
},
{
"case": "block-dirty-bitmap-clear",
- "type": "429"
+ "type": "430"
},
{
"case": "block-dirty-bitmap-enable",
- "type": "429"
+ "type": "430"
},
{
"case": "block-dirty-bitmap-disable",
- "type": "429"
+ "type": "430"
},
{
"case": "block-dirty-bitmap-merge",
- "type": "430"
+ "type": "431"
},
{
"case": "blockdev-backup",
- "type": "431"
+ "type": "432"
},
{
"case": "blockdev-snapshot",
- "type": "432"
+ "type": "433"
},
{
"case": "blockdev-snapshot-internal-sync",
- "type": "433"
+ "type": "434"
},
{
"case": "blockdev-snapshot-sync",
- "type": "434"
+ "type": "435"
},
{
"case": "drive-backup",
- "type": "435"
+ "type": "436"
}
],
"members": [
{
"name": "type",
- "type": "426"
+ "type": "427"
}
],
"meta-type": "object"
},
{
- "name": "314",
+ "name": "316",
"members": [
{
"name": "completion-mode",
"default": null,
- "type": "436"
+ "type": "437"
}
],
"meta-type": "object"
},
{
- "name": "315",
+ "name": "317",
"meta-type": "enum",
"values": [
"unavailable",
@@ -17587,7 +18636,7 @@
]
},
{
- "name": "316",
+ "name": "318",
"meta-type": "enum",
"values": [
"builtin",
@@ -17600,17 +18649,17 @@
]
},
{
- "name": "317",
+ "name": "319",
"members": [
{
"name": "json-type",
- "type": "437"
+ "type": "438"
}
],
"meta-type": "object"
},
{
- "name": "318",
+ "name": "320",
"members": [
{
"name": "values",
@@ -17620,7 +18669,7 @@
"meta-type": "object"
},
{
- "name": "319",
+ "name": "321",
"members": [
{
"name": "element-type",
@@ -17630,11 +18679,11 @@
"meta-type": "object"
},
{
- "name": "320",
+ "name": "322",
"members": [
{
"name": "members",
- "type": "[438]"
+ "type": "[439]"
},
{
"name": "tag",
@@ -17644,7 +18693,7 @@
{
"name": "variants",
"default": null,
- "type": "[439]"
+ "type": "[440]"
},
{
"name": "features",
@@ -17655,17 +18704,17 @@
"meta-type": "object"
},
{
- "name": "321",
+ "name": "323",
"members": [
{
"name": "members",
- "type": "[440]"
+ "type": "[441]"
}
],
"meta-type": "object"
},
{
- "name": "322",
+ "name": "324",
"members": [
{
"name": "arg-type",
@@ -17684,7 +18733,7 @@
"meta-type": "object"
},
{
- "name": "323",
+ "name": "325",
"members": [
{
"name": "arg-type",
@@ -17693,36 +18742,6 @@
],
"meta-type": "object"
},
- {
- "name": "[324]",
- "element-type": "324",
- "meta-type": "array"
- },
- {
- "name": "324",
- "meta-type": "enum",
- "values": [
- "oob"
- ]
- },
- {
- "name": "325",
- "members": [
- {
- "name": "major",
- "type": "int"
- },
- {
- "name": "minor",
- "type": "int"
- },
- {
- "name": "micro",
- "type": "int"
- }
- ],
- "meta-type": "object"
- },
{
"name": "326",
"members": [
@@ -17736,6 +18755,11 @@
"default": null,
"type": "int"
},
+ {
+ "name": "die-id",
+ "default": null,
+ "type": "int"
+ },
{
"name": "core-id",
"default": null,
@@ -17822,7 +18846,7 @@
"members": [
{
"name": "cpu-state",
- "type": "441"
+ "type": "442"
}
],
"meta-type": "object"
@@ -17875,240 +18899,256 @@
]
},
{
- "name": "[336]",
- "element-type": "336",
- "meta-type": "array"
+ "name": "336",
+ "meta-type": "enum",
+ "values": [
+ "default",
+ "preferred",
+ "bind",
+ "interleave"
+ ]
},
{
- "name": "336",
+ "name": "337",
+ "meta-type": "enum",
+ "values": [
+ "node",
+ "dist",
+ "cpu"
+ ]
+ },
+ {
+ "name": "338",
"members": [
{
- "name": "bus",
- "type": "int"
- },
- {
- "name": "slot",
- "type": "int"
- },
- {
- "name": "function",
+ "name": "nodeid",
+ "default": null,
"type": "int"
},
{
- "name": "class_info",
- "type": "442"
- },
- {
- "name": "id",
- "type": "443"
+ "name": "cpus",
+ "default": null,
+ "type": "[int]"
},
{
- "name": "irq",
+ "name": "mem",
"default": null,
"type": "int"
},
{
- "name": "qdev_id",
+ "name": "memdev",
+ "default": null,
"type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "339",
+ "members": [
+ {
+ "name": "src",
+ "type": "int"
},
{
- "name": "pci_bridge",
- "default": null,
- "type": "444"
+ "name": "dst",
+ "type": "int"
},
{
- "name": "regions",
- "type": "[445]"
+ "name": "val",
+ "type": "int"
}
],
"meta-type": "object"
},
{
- "name": "337",
- "meta-type": "enum",
- "values": [
- "elf",
- "kdump-zlib",
- "kdump-lzo",
- "kdump-snappy",
- "win-dmp"
- ]
- },
- {
- "name": "338",
- "meta-type": "enum",
- "values": [
- "none",
- "active",
- "completed",
- "failed"
- ]
- },
- {
- "name": "[337]",
- "element-type": "337",
- "meta-type": "array"
- },
- {
- "name": "[339]",
- "element-type": "339",
- "meta-type": "array"
- },
- {
- "name": "339",
+ "name": "340",
"members": [
{
- "name": "fd",
+ "name": "node-id",
+ "default": null,
"type": "int"
},
{
- "name": "opaque",
+ "name": "socket-id",
"default": null,
- "type": "str"
+ "type": "int"
+ },
+ {
+ "name": "die-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "core-id",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "thread-id",
+ "default": null,
+ "type": "int"
}
],
"meta-type": "object"
},
{
- "name": "[340]",
- "element-type": "340",
- "meta-type": "array"
- },
- {
- "name": "340",
+ "name": "341",
"members": [
{
"name": "name",
"type": "str"
},
{
- "name": "type",
- "type": "446"
- },
- {
- "name": "help",
- "default": null,
- "type": "str"
- },
- {
- "name": "default",
+ "name": "props",
"default": null,
- "type": "str"
+ "type": "any"
}
],
"meta-type": "object"
},
{
- "name": "341",
+ "name": "342",
"meta-type": "enum",
"values": [
- "default",
- "preferred",
- "bind",
- "interleave"
+ "incompatible",
+ "identical",
+ "superset",
+ "subset"
]
},
{
- "name": "342",
+ "name": "343",
"meta-type": "enum",
"values": [
- "dimm",
- "nvdimm"
+ "static",
+ "full"
]
},
{
- "name": "343",
- "members": [
- {
- "name": "data",
- "type": "447"
- }
- ],
- "meta-type": "object"
+ "name": "[344]",
+ "element-type": "344",
+ "meta-type": "array"
},
{
"name": "344",
"meta-type": "enum",
"values": [
- "DIMM",
- "CPU"
+ "oob"
]
},
{
"name": "345",
- "meta-type": "enum",
- "values": [
- "node",
- "dist",
- "cpu"
- ]
+ "members": [
+ {
+ "name": "major",
+ "type": "int"
+ },
+ {
+ "name": "minor",
+ "type": "int"
+ },
+ {
+ "name": "micro",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[346]",
+ "element-type": "346",
+ "meta-type": "array"
},
{
"name": "346",
"members": [
{
- "name": "nodeid",
- "default": null,
+ "name": "bus",
"type": "int"
},
{
- "name": "cpus",
- "default": null,
- "type": "[int]"
+ "name": "slot",
+ "type": "int"
},
{
- "name": "mem",
- "default": null,
+ "name": "function",
"type": "int"
},
{
- "name": "memdev",
+ "name": "class_info",
+ "type": "443"
+ },
+ {
+ "name": "id",
+ "type": "444"
+ },
+ {
+ "name": "irq",
"default": null,
+ "type": "int"
+ },
+ {
+ "name": "qdev_id",
"type": "str"
+ },
+ {
+ "name": "pci_bridge",
+ "default": null,
+ "type": "445"
+ },
+ {
+ "name": "regions",
+ "type": "[446]"
}
],
"meta-type": "object"
},
+ {
+ "name": "[347]",
+ "element-type": "347",
+ "meta-type": "array"
+ },
{
"name": "347",
"members": [
{
- "name": "src",
- "type": "int"
- },
- {
- "name": "dst",
+ "name": "fd",
"type": "int"
},
{
- "name": "val",
- "type": "int"
+ "name": "opaque",
+ "default": null,
+ "type": "str"
}
],
"meta-type": "object"
},
+ {
+ "name": "[348]",
+ "element-type": "348",
+ "meta-type": "array"
+ },
{
"name": "348",
"members": [
{
- "name": "node-id",
- "default": null,
- "type": "int"
+ "name": "name",
+ "type": "str"
},
{
- "name": "socket-id",
- "default": null,
- "type": "int"
+ "name": "type",
+ "type": "447"
},
{
- "name": "core-id",
+ "name": "help",
"default": null,
- "type": "int"
+ "type": "str"
},
{
- "name": "thread-id",
+ "name": "default",
"default": null,
- "type": "int"
+ "type": "str"
}
],
"meta-type": "object"
@@ -18117,49 +19157,53 @@
"name": "349",
"meta-type": "enum",
"values": [
- "uninit",
- "launch-update",
- "launch-secret",
- "running",
- "send-update",
- "receive-update"
+ "dimm",
+ "nvdimm",
+ "virtio-pmem"
]
},
{
"name": "350",
"members": [
{
- "name": "name",
- "type": "str"
- },
- {
- "name": "props",
- "default": null,
- "type": "any"
+ "name": "data",
+ "type": "448"
}
],
"meta-type": "object"
},
{
"name": "351",
+ "members": [
+ {
+ "name": "data",
+ "type": "449"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "352",
"meta-type": "enum",
"values": [
- "incompatible",
- "identical",
- "superset",
- "subset"
+ "DIMM",
+ "CPU"
]
},
{
- "name": "352",
+ "name": "353",
"meta-type": "enum",
"values": [
- "static",
- "full"
+ "uninit",
+ "launch-update",
+ "launch-secret",
+ "running",
+ "send-update",
+ "receive-update"
]
},
{
- "name": "353",
+ "name": "354",
"meta-type": "enum",
"values": [
"hyper-v",
@@ -18167,7 +19211,7 @@
]
},
{
- "name": "354",
+ "name": "355",
"members": [
{
"name": "arg1",
@@ -18193,7 +19237,7 @@
"meta-type": "object"
},
{
- "name": "355",
+ "name": "356",
"members": [
{
"name": "core",
@@ -18209,13 +19253,13 @@
},
{
"name": "reason",
- "type": "448"
+ "type": "450"
}
],
"meta-type": "object"
},
{
- "name": "356",
+ "name": "357",
"meta-type": "enum",
"values": [
"active",
@@ -18226,12 +19270,12 @@
]
},
{
- "name": "[357]",
- "element-type": "357",
+ "name": "[358]",
+ "element-type": "358",
"meta-type": "array"
},
{
- "name": "357",
+ "name": "358",
"members": [
{
"name": "interval_length",
@@ -18285,7 +19329,7 @@
"meta-type": "object"
},
{
- "name": "358",
+ "name": "359",
"members": [
{
"name": "boundaries",
@@ -18304,32 +19348,32 @@
"meta-type": "array"
},
{
- "name": "359",
+ "name": "360",
"tag": "type",
"variants": [
{
"case": "qcow2",
- "type": "450"
+ "type": "452"
},
{
"case": "vmdk",
- "type": "451"
+ "type": "453"
},
{
"case": "luks",
- "type": "452"
+ "type": "454"
}
],
"members": [
{
"name": "type",
- "type": "449"
+ "type": "451"
}
],
"meta-type": "object"
},
{
- "name": "360",
+ "name": "361",
"meta-type": "enum",
"values": [
"block-backend",
@@ -18338,12 +19382,12 @@
]
},
{
- "name": "[361]",
- "element-type": "361",
+ "name": "[362]",
+ "element-type": "362",
"meta-type": "array"
},
{
- "name": "361",
+ "name": "362",
"meta-type": "enum",
"values": [
"consistent-read",
@@ -18354,7 +19398,7 @@
]
},
{
- "name": "362",
+ "name": "363",
"members": [
{
"type": "45"
@@ -18366,16 +19410,16 @@
"meta-type": "alternate"
},
{
- "name": "[363]",
- "element-type": "363",
+ "name": "[364]",
+ "element-type": "364",
"meta-type": "array"
},
{
- "name": "363",
+ "name": "364",
"members": [
{
"name": "event",
- "type": "453"
+ "type": "455"
},
{
"name": "state",
@@ -18385,7 +19429,7 @@
{
"name": "iotype",
"default": null,
- "type": "454"
+ "type": "456"
},
{
"name": "errno",
@@ -18411,16 +19455,16 @@
"meta-type": "object"
},
{
- "name": "[364]",
- "element-type": "364",
+ "name": "[365]",
+ "element-type": "365",
"meta-type": "array"
},
{
- "name": "364",
+ "name": "365",
"members": [
{
"name": "event",
- "type": "453"
+ "type": "455"
},
{
"name": "state",
@@ -18435,7 +19479,7 @@
"meta-type": "object"
},
{
- "name": "365",
+ "name": "366",
"meta-type": "enum",
"values": [
"auto",
@@ -18444,7 +19488,7 @@
]
},
{
- "name": "366",
+ "name": "367",
"meta-type": "enum",
"values": [
"threads",
@@ -18452,7 +19496,7 @@
]
},
{
- "name": "367",
+ "name": "368",
"meta-type": "enum",
"values": [
"tcp",
@@ -18460,7 +19504,7 @@
]
},
{
- "name": "368",
+ "name": "369",
"meta-type": "enum",
"values": [
"crc32c",
@@ -18470,11 +19514,11 @@
]
},
{
- "name": "369",
+ "name": "370",
"members": [
{
"name": "type",
- "type": "455"
+ "type": "457"
},
{
"name": "host",
@@ -18484,7 +19528,7 @@
"meta-type": "object"
},
{
- "name": "370",
+ "name": "371",
"members": [
{
"type": "45"
@@ -18499,62 +19543,62 @@
"meta-type": "alternate"
},
{
- "name": "371",
+ "name": "372",
"members": [
{
- "type": "456"
+ "type": "458"
},
{
- "type": "457"
+ "type": "459"
}
],
"meta-type": "alternate"
},
{
- "name": "372",
+ "name": "373",
"tag": "format",
"variants": [
{
"case": "aes",
- "type": "459"
+ "type": "461"
},
{
"case": "luks",
- "type": "460"
+ "type": "462"
}
],
"members": [
{
"name": "format",
- "type": "458"
+ "type": "460"
}
],
"meta-type": "object"
},
{
- "name": "373",
+ "name": "374",
"tag": "format",
"variants": [
{
"case": "aes",
- "type": "459"
+ "type": "461"
}
],
"members": [
{
"name": "format",
- "type": "461"
+ "type": "463"
}
],
"meta-type": "object"
},
{
- "name": "[362]",
- "element-type": "362",
+ "name": "[363]",
+ "element-type": "363",
"meta-type": "array"
},
{
- "name": "374",
+ "name": "375",
"meta-type": "enum",
"values": [
"quorum",
@@ -18562,12 +19606,12 @@
]
},
{
- "name": "[375]",
- "element-type": "375",
+ "name": "[376]",
+ "element-type": "376",
"meta-type": "array"
},
{
- "name": "375",
+ "name": "376",
"meta-type": "enum",
"values": [
"cephx",
@@ -18575,12 +19619,12 @@
]
},
{
- "name": "[376]",
- "element-type": "376",
+ "name": "[377]",
+ "element-type": "377",
"meta-type": "array"
},
{
- "name": "376",
+ "name": "377",
"members": [
{
"name": "host",
@@ -18594,7 +19638,7 @@
"meta-type": "object"
},
{
- "name": "377",
+ "name": "378",
"meta-type": "enum",
"values": [
"primary",
@@ -18602,7 +19646,7 @@
]
},
{
- "name": "378",
+ "name": "379",
"members": [
{
"name": "host",
@@ -18636,12 +19680,12 @@
"meta-type": "object"
},
{
- "name": "379",
+ "name": "380",
"tag": "mode",
"variants": [
{
"case": "hash",
- "type": "463"
+ "type": "465"
},
{
"case": "none",
@@ -18655,13 +19699,13 @@
"members": [
{
"name": "mode",
- "type": "462"
+ "type": "464"
}
],
"meta-type": "object"
},
{
- "name": "380",
+ "name": "381",
"members": [
{
"name": "filename",
@@ -18674,7 +19718,7 @@
{
"name": "preallocation",
"default": null,
- "type": "464"
+ "type": "466"
},
{
"name": "nocow",
@@ -18685,7 +19729,7 @@
"meta-type": "object"
},
{
- "name": "381",
+ "name": "382",
"members": [
{
"name": "location",
@@ -18698,13 +19742,13 @@
{
"name": "preallocation",
"default": null,
- "type": "464"
+ "type": "466"
}
],
"meta-type": "object"
},
{
- "name": "382",
+ "name": "383",
"members": [
{
"name": "key-secret",
@@ -18714,27 +19758,27 @@
{
"name": "cipher-alg",
"default": null,
- "type": "465"
+ "type": "467"
},
{
"name": "cipher-mode",
"default": null,
- "type": "466"
+ "type": "468"
},
{
"name": "ivgen-alg",
"default": null,
- "type": "467"
+ "type": "469"
},
{
"name": "ivgen-hash-alg",
"default": null,
- "type": "468"
+ "type": "470"
},
{
"name": "hash-alg",
"default": null,
- "type": "468"
+ "type": "470"
},
{
"name": "iter-time",
@@ -18743,7 +19787,7 @@
},
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "size",
@@ -18753,7 +19797,7 @@
"meta-type": "object"
},
{
- "name": "383",
+ "name": "384",
"members": [
{
"name": "location",
@@ -18767,11 +19811,11 @@
"meta-type": "object"
},
{
- "name": "384",
+ "name": "385",
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "size",
@@ -18786,11 +19830,11 @@
"meta-type": "object"
},
{
- "name": "385",
+ "name": "386",
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "size",
@@ -18804,22 +19848,22 @@
{
"name": "encrypt",
"default": null,
- "type": "469"
+ "type": "471"
}
],
"meta-type": "object"
},
{
- "name": "386",
+ "name": "387",
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "data-file",
"default": null,
- "type": "362"
+ "type": "363"
},
{
"name": "data-file-raw",
@@ -18833,7 +19877,7 @@
{
"name": "version",
"default": null,
- "type": "470"
+ "type": "472"
},
{
"name": "backing-file",
@@ -18848,7 +19892,7 @@
{
"name": "encrypt",
"default": null,
- "type": "469"
+ "type": "471"
},
{
"name": "cluster-size",
@@ -18858,7 +19902,7 @@
{
"name": "preallocation",
"default": null,
- "type": "464"
+ "type": "466"
},
{
"name": "lazy-refcounts",
@@ -18874,11 +19918,11 @@
"meta-type": "object"
},
{
- "name": "387",
+ "name": "388",
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "size",
@@ -18908,7 +19952,7 @@
"meta-type": "object"
},
{
- "name": "388",
+ "name": "389",
"members": [
{
"name": "location",
@@ -18927,7 +19971,7 @@
"meta-type": "object"
},
{
- "name": "389",
+ "name": "390",
"members": [
{
"name": "location",
@@ -18945,12 +19989,12 @@
{
"name": "preallocation",
"default": null,
- "type": "464"
+ "type": "466"
},
{
"name": "redundancy",
"default": null,
- "type": "471"
+ "type": "473"
},
{
"name": "object-size",
@@ -18961,7 +20005,7 @@
"meta-type": "object"
},
{
- "name": "390",
+ "name": "391",
"members": [
{
"name": "location",
@@ -18975,11 +20019,11 @@
"meta-type": "object"
},
{
- "name": "391",
+ "name": "392",
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "size",
@@ -18988,17 +20032,17 @@
{
"name": "preallocation",
"default": null,
- "type": "464"
+ "type": "466"
}
],
"meta-type": "object"
},
{
- "name": "392",
+ "name": "393",
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "size",
@@ -19017,7 +20061,7 @@
{
"name": "subformat",
"default": null,
- "type": "472"
+ "type": "474"
},
{
"name": "block-state-zero",
@@ -19028,11 +20072,11 @@
"meta-type": "object"
},
{
- "name": "393",
+ "name": "394",
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "size",
@@ -19041,12 +20085,12 @@
{
"name": "extents",
"default": null,
- "type": "[362]"
+ "type": "[363]"
},
{
"name": "subformat",
"default": null,
- "type": "473"
+ "type": "475"
},
{
"name": "backing-file",
@@ -19056,7 +20100,7 @@
{
"name": "adapter-type",
"default": null,
- "type": "474"
+ "type": "476"
},
{
"name": "hwversion",
@@ -19072,11 +20116,11 @@
"meta-type": "object"
},
{
- "name": "394",
+ "name": "395",
"members": [
{
"name": "file",
- "type": "362"
+ "type": "363"
},
{
"name": "size",
@@ -19085,7 +20129,7 @@
{
"name": "subformat",
"default": null,
- "type": "475"
+ "type": "477"
},
{
"name": "force-size",
@@ -19101,7 +20145,7 @@
"meta-type": "builtin"
},
{
- "name": "395",
+ "name": "396",
"meta-type": "enum",
"values": [
"inet",
@@ -19111,47 +20155,47 @@
]
},
{
- "name": "396",
+ "name": "397",
"members": [
{
"name": "data",
- "type": "378"
+ "type": "379"
}
],
"meta-type": "object"
},
{
- "name": "397",
+ "name": "398",
"members": [
{
"name": "data",
- "type": "423"
+ "type": "424"
}
],
"meta-type": "object"
},
{
- "name": "398",
+ "name": "399",
"members": [
{
"name": "data",
- "type": "424"
+ "type": "425"
}
],
"meta-type": "object"
},
{
- "name": "399",
+ "name": "400",
"members": [
{
"name": "data",
- "type": "425"
+ "type": "426"
}
],
"meta-type": "object"
},
{
- "name": "400",
+ "name": "401",
"meta-type": "enum",
"values": [
"file",
@@ -19176,22 +20220,12 @@
"memory"
]
},
- {
- "name": "401",
- "members": [
- {
- "name": "data",
- "type": "476"
- }
- ],
- "meta-type": "object"
- },
{
"name": "402",
"members": [
{
"name": "data",
- "type": "477"
+ "type": "478"
}
],
"meta-type": "object"
@@ -19201,7 +20235,7 @@
"members": [
{
"name": "data",
- "type": "478"
+ "type": "479"
}
],
"meta-type": "object"
@@ -19211,7 +20245,7 @@
"members": [
{
"name": "data",
- "type": "479"
+ "type": "480"
}
],
"meta-type": "object"
@@ -19221,7 +20255,7 @@
"members": [
{
"name": "data",
- "type": "480"
+ "type": "481"
}
],
"meta-type": "object"
@@ -19231,7 +20265,7 @@
"members": [
{
"name": "data",
- "type": "481"
+ "type": "482"
}
],
"meta-type": "object"
@@ -19241,7 +20275,7 @@
"members": [
{
"name": "data",
- "type": "482"
+ "type": "483"
}
],
"meta-type": "object"
@@ -19251,7 +20285,7 @@
"members": [
{
"name": "data",
- "type": "483"
+ "type": "484"
}
],
"meta-type": "object"
@@ -19261,7 +20295,7 @@
"members": [
{
"name": "data",
- "type": "484"
+ "type": "485"
}
],
"meta-type": "object"
@@ -19271,7 +20305,7 @@
"members": [
{
"name": "data",
- "type": "485"
+ "type": "486"
}
],
"meta-type": "object"
@@ -19281,13 +20315,23 @@
"members": [
{
"name": "data",
- "type": "486"
+ "type": "487"
}
],
"meta-type": "object"
},
{
"name": "412",
+ "members": [
+ {
+ "name": "data",
+ "type": "488"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "413",
"meta-type": "enum",
"values": [
"passthrough",
@@ -19295,27 +20339,27 @@
]
},
{
- "name": "413",
+ "name": "414",
"members": [
{
"name": "data",
- "type": "487"
+ "type": "489"
}
],
"meta-type": "object"
},
{
- "name": "414",
+ "name": "415",
"members": [
{
"name": "data",
- "type": "488"
+ "type": "490"
}
],
"meta-type": "object"
},
{
- "name": "415",
+ "name": "416",
"meta-type": "enum",
"values": [
"number",
@@ -19323,7 +20367,7 @@
]
},
{
- "name": "416",
+ "name": "417",
"members": [
{
"name": "data",
@@ -19333,17 +20377,17 @@
"meta-type": "object"
},
{
- "name": "417",
+ "name": "418",
"members": [
{
"name": "data",
- "type": "489"
+ "type": "491"
}
],
"meta-type": "object"
},
{
- "name": "418",
+ "name": "419",
"meta-type": "enum",
"values": [
"key",
@@ -19353,37 +20397,37 @@
]
},
{
- "name": "419",
+ "name": "420",
"members": [
{
"name": "data",
- "type": "490"
+ "type": "492"
}
],
"meta-type": "object"
},
{
- "name": "420",
+ "name": "421",
"members": [
{
"name": "data",
- "type": "491"
+ "type": "493"
}
],
"meta-type": "object"
},
{
- "name": "421",
+ "name": "422",
"members": [
{
"name": "data",
- "type": "492"
+ "type": "494"
}
],
"meta-type": "object"
},
{
- "name": "422",
+ "name": "423",
"meta-type": "enum",
"values": [
"inet",
@@ -19393,7 +20437,7 @@
]
},
{
- "name": "423",
+ "name": "424",
"members": [
{
"name": "path",
@@ -19403,7 +20447,7 @@
"meta-type": "object"
},
{
- "name": "424",
+ "name": "425",
"members": [
{
"name": "cid",
@@ -19417,7 +20461,7 @@
"meta-type": "object"
},
{
- "name": "425",
+ "name": "426",
"members": [
{
"name": "str",
@@ -19427,7 +20471,7 @@
"meta-type": "object"
},
{
- "name": "426",
+ "name": "427",
"meta-type": "enum",
"values": [
"abort",
@@ -19444,17 +20488,17 @@
]
},
{
- "name": "427",
+ "name": "428",
"members": [
{
"name": "data",
- "type": "493"
+ "type": "495"
}
],
"meta-type": "object"
},
{
- "name": "428",
+ "name": "429",
"members": [
{
"name": "data",
@@ -19464,7 +20508,7 @@
"meta-type": "object"
},
{
- "name": "429",
+ "name": "430",
"members": [
{
"name": "data",
@@ -19474,7 +20518,7 @@
"meta-type": "object"
},
{
- "name": "430",
+ "name": "431",
"members": [
{
"name": "data",
@@ -19484,7 +20528,7 @@
"meta-type": "object"
},
{
- "name": "431",
+ "name": "432",
"members": [
{
"name": "data",
@@ -19494,7 +20538,7 @@
"meta-type": "object"
},
{
- "name": "432",
+ "name": "433",
"members": [
{
"name": "data",
@@ -19504,7 +20548,7 @@
"meta-type": "object"
},
{
- "name": "433",
+ "name": "434",
"members": [
{
"name": "data",
@@ -19514,7 +20558,7 @@
"meta-type": "object"
},
{
- "name": "434",
+ "name": "435",
"members": [
{
"name": "data",
@@ -19524,7 +20568,7 @@
"meta-type": "object"
},
{
- "name": "435",
+ "name": "436",
"members": [
{
"name": "data",
@@ -19534,7 +20578,7 @@
"meta-type": "object"
},
{
- "name": "436",
+ "name": "437",
"meta-type": "enum",
"values": [
"individual",
@@ -19542,7 +20586,7 @@
]
},
{
- "name": "437",
+ "name": "438",
"meta-type": "enum",
"values": [
"string",
@@ -19556,12 +20600,12 @@
]
},
{
- "name": "[438]",
- "element-type": "438",
+ "name": "[439]",
+ "element-type": "439",
"meta-type": "array"
},
{
- "name": "438",
+ "name": "439",
"members": [
{
"name": "name",
@@ -19580,12 +20624,12 @@
"meta-type": "object"
},
{
- "name": "[439]",
- "element-type": "439",
+ "name": "[440]",
+ "element-type": "440",
"meta-type": "array"
},
{
- "name": "439",
+ "name": "440",
"members": [
{
"name": "case",
@@ -19599,12 +20643,12 @@
"meta-type": "object"
},
{
- "name": "[440]",
- "element-type": "440",
+ "name": "[441]",
+ "element-type": "441",
"meta-type": "array"
},
{
- "name": "440",
+ "name": "441",
"members": [
{
"name": "type",
@@ -19614,7 +20658,7 @@
"meta-type": "object"
},
{
- "name": "441",
+ "name": "442",
"meta-type": "enum",
"values": [
"uninitialized",
@@ -19625,7 +20669,7 @@
]
},
{
- "name": "442",
+ "name": "443",
"members": [
{
"name": "desc",
@@ -19640,7 +20684,7 @@
"meta-type": "object"
},
{
- "name": "443",
+ "name": "444",
"members": [
{
"name": "device",
@@ -19664,27 +20708,27 @@
"meta-type": "object"
},
{
- "name": "444",
+ "name": "445",
"members": [
{
"name": "bus",
- "type": "494"
+ "type": "496"
},
{
"name": "devices",
"default": null,
- "type": "[336]"
+ "type": "[346]"
}
],
"meta-type": "object"
},
{
- "name": "[445]",
- "element-type": "445",
+ "name": "[446]",
+ "element-type": "446",
"meta-type": "array"
},
{
- "name": "445",
+ "name": "446",
"members": [
{
"name": "bar",
@@ -19716,7 +20760,7 @@
"meta-type": "object"
},
{
- "name": "446",
+ "name": "447",
"meta-type": "enum",
"values": [
"string",
@@ -19726,7 +20770,7 @@
]
},
{
- "name": "447",
+ "name": "448",
"members": [
{
"name": "id",
@@ -19765,7 +20809,30 @@
"meta-type": "object"
},
{
- "name": "448",
+ "name": "449",
+ "members": [
+ {
+ "name": "id",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "memaddr",
+ "type": "int"
+ },
+ {
+ "name": "size",
+ "type": "int"
+ },
+ {
+ "name": "memdev",
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "450",
"meta-type": "enum",
"values": [
"unknown",
@@ -19776,7 +20843,7 @@
]
},
{
- "name": "449",
+ "name": "451",
"meta-type": "enum",
"values": [
"qcow2",
@@ -19785,37 +20852,37 @@
]
},
{
- "name": "450",
+ "name": "452",
"members": [
{
"name": "data",
- "type": "495"
+ "type": "497"
}
],
"meta-type": "object"
},
{
- "name": "451",
+ "name": "453",
"members": [
{
"name": "data",
- "type": "496"
+ "type": "498"
}
],
"meta-type": "object"
},
{
- "name": "452",
+ "name": "454",
"members": [
{
"name": "data",
- "type": "497"
+ "type": "499"
}
],
"meta-type": "object"
},
{
- "name": "453",
+ "name": "455",
"meta-type": "enum",
"values": [
"l1_update",
@@ -19869,7 +20936,7 @@
]
},
{
- "name": "454",
+ "name": "456",
"meta-type": "enum",
"values": [
"read",
@@ -19881,19 +20948,19 @@
]
},
{
- "name": "455",
+ "name": "457",
"meta-type": "enum",
"values": [
"inet"
]
},
{
- "name": "456",
+ "name": "458",
"members": [
{
"name": "template",
"default": null,
- "type": "457"
+ "type": "459"
},
{
"name": "main-header",
@@ -19944,7 +21011,7 @@
"meta-type": "object"
},
{
- "name": "457",
+ "name": "459",
"meta-type": "enum",
"values": [
"none",
@@ -19954,7 +21021,7 @@
]
},
{
- "name": "458",
+ "name": "460",
"meta-type": "enum",
"values": [
"aes",
@@ -19962,7 +21029,7 @@
]
},
{
- "name": "459",
+ "name": "461",
"members": [
{
"name": "key-secret",
@@ -19973,7 +21040,7 @@
"meta-type": "object"
},
{
- "name": "460",
+ "name": "462",
"members": [
{
"name": "key-secret",
@@ -19984,14 +21051,14 @@
"meta-type": "object"
},
{
- "name": "461",
+ "name": "463",
"meta-type": "enum",
"values": [
"aes"
]
},
{
- "name": "462",
+ "name": "464",
"meta-type": "enum",
"values": [
"none",
@@ -20000,11 +21067,11 @@
]
},
{
- "name": "463",
+ "name": "465",
"members": [
{
"name": "type",
- "type": "498"
+ "type": "500"
},
{
"name": "hash",
@@ -20014,7 +21081,7 @@
"meta-type": "object"
},
{
- "name": "464",
+ "name": "466",
"meta-type": "enum",
"values": [
"off",
@@ -20024,7 +21091,7 @@
]
},
{
- "name": "465",
+ "name": "467",
"meta-type": "enum",
"values": [
"aes-128",
@@ -20042,7 +21109,7 @@
]
},
{
- "name": "466",
+ "name": "468",
"meta-type": "enum",
"values": [
"ecb",
@@ -20052,7 +21119,7 @@
]
},
{
- "name": "467",
+ "name": "469",
"meta-type": "enum",
"values": [
"plain",
@@ -20061,7 +21128,7 @@
]
},
{
- "name": "468",
+ "name": "470",
"meta-type": "enum",
"values": [
"md5",
@@ -20074,28 +21141,28 @@
]
},
{
- "name": "469",
+ "name": "471",
"tag": "format",
"variants": [
{
"case": "qcow",
- "type": "459"
+ "type": "461"
},
{
"case": "luks",
- "type": "500"
+ "type": "502"
}
],
"members": [
{
"name": "format",
- "type": "499"
+ "type": "501"
}
],
"meta-type": "object"
},
{
- "name": "470",
+ "name": "472",
"meta-type": "enum",
"values": [
"v2",
@@ -20103,28 +21170,28 @@
]
},
{
- "name": "471",
+ "name": "473",
"tag": "type",
"variants": [
{
"case": "full",
- "type": "502"
+ "type": "504"
},
{
"case": "erasure-coded",
- "type": "503"
+ "type": "505"
}
],
"members": [
{
"name": "type",
- "type": "501"
+ "type": "503"
}
],
"meta-type": "object"
},
{
- "name": "472",
+ "name": "474",
"meta-type": "enum",
"values": [
"dynamic",
@@ -20132,7 +21199,7 @@
]
},
{
- "name": "473",
+ "name": "475",
"meta-type": "enum",
"values": [
"monolithicSparse",
@@ -20143,7 +21210,7 @@
]
},
{
- "name": "474",
+ "name": "476",
"meta-type": "enum",
"values": [
"ide",
@@ -20153,7 +21220,7 @@
]
},
{
- "name": "475",
+ "name": "477",
"meta-type": "enum",
"values": [
"dynamic",
@@ -20161,7 +21228,7 @@
]
},
{
- "name": "476",
+ "name": "478",
"members": [
{
"name": "logfile",
@@ -20191,7 +21258,7 @@
"meta-type": "object"
},
{
- "name": "477",
+ "name": "479",
"members": [
{
"name": "logfile",
@@ -20211,7 +21278,7 @@
"meta-type": "object"
},
{
- "name": "478",
+ "name": "480",
"members": [
{
"name": "logfile",
@@ -20276,7 +21343,7 @@
"meta-type": "object"
},
{
- "name": "479",
+ "name": "481",
"members": [
{
"name": "logfile",
@@ -20301,7 +21368,7 @@
"meta-type": "object"
},
{
- "name": "480",
+ "name": "482",
"members": [
{
"name": "logfile",
@@ -20317,7 +21384,7 @@
"meta-type": "object"
},
{
- "name": "481",
+ "name": "483",
"members": [
{
"name": "logfile",
@@ -20337,7 +21404,7 @@
"meta-type": "object"
},
{
- "name": "482",
+ "name": "484",
"members": [
{
"name": "logfile",
@@ -20358,7 +21425,7 @@
"meta-type": "object"
},
{
- "name": "483",
+ "name": "485",
"members": [
{
"name": "logfile",
@@ -20378,7 +21445,7 @@
"meta-type": "object"
},
{
- "name": "484",
+ "name": "486",
"members": [
{
"name": "logfile",
@@ -20398,7 +21465,7 @@
"meta-type": "object"
},
{
- "name": "485",
+ "name": "487",
"members": [
{
"name": "logfile",
@@ -20434,7 +21501,7 @@
"meta-type": "object"
},
{
- "name": "486",
+ "name": "488",
"members": [
{
"name": "logfile",
@@ -20455,7 +21522,7 @@
"meta-type": "object"
},
{
- "name": "487",
+ "name": "489",
"members": [
{
"name": "path",
@@ -20471,7 +21538,7 @@
"meta-type": "object"
},
{
- "name": "488",
+ "name": "490",
"members": [
{
"name": "chardev",
@@ -20481,7 +21548,7 @@
"meta-type": "object"
},
{
- "name": "489",
+ "name": "491",
"meta-type": "enum",
"values": [
"unmapped",
@@ -20635,11 +21702,11 @@
]
},
{
- "name": "490",
+ "name": "492",
"members": [
{
"name": "key",
- "type": "298"
+ "type": "300"
},
{
"name": "down",
@@ -20649,11 +21716,11 @@
"meta-type": "object"
},
{
- "name": "491",
+ "name": "493",
"members": [
{
"name": "button",
- "type": "504"
+ "type": "506"
},
{
"name": "down",
@@ -20663,11 +21730,11 @@
"meta-type": "object"
},
{
- "name": "492",
+ "name": "494",
"members": [
{
"name": "axis",
- "type": "505"
+ "type": "507"
},
{
"name": "value",
@@ -20677,13 +21744,13 @@
"meta-type": "object"
},
{
- "name": "493",
+ "name": "495",
"members": [
],
"meta-type": "object"
},
{
- "name": "494",
+ "name": "496",
"members": [
{
"name": "number",
@@ -20699,21 +21766,21 @@
},
{
"name": "io_range",
- "type": "506"
+ "type": "508"
},
{
"name": "memory_range",
- "type": "506"
+ "type": "508"
},
{
"name": "prefetchable_range",
- "type": "506"
+ "type": "508"
}
],
"meta-type": "object"
},
{
- "name": "495",
+ "name": "497",
"members": [
{
"name": "compat",
@@ -20746,18 +21813,18 @@
{
"name": "encrypt",
"default": null,
- "type": "507"
+ "type": "509"
},
{
"name": "bitmaps",
"default": null,
- "type": "[508]"
+ "type": "[510]"
}
],
"meta-type": "object"
},
{
- "name": "496",
+ "name": "498",
"members": [
{
"name": "create-type",
@@ -20779,28 +21846,28 @@
"meta-type": "object"
},
{
- "name": "497",
+ "name": "499",
"members": [
{
"name": "cipher-alg",
- "type": "465"
+ "type": "467"
},
{
"name": "cipher-mode",
- "type": "466"
+ "type": "468"
},
{
"name": "ivgen-alg",
- "type": "467"
+ "type": "469"
},
{
"name": "ivgen-hash-alg",
"default": null,
- "type": "468"
+ "type": "470"
},
{
"name": "hash-alg",
- "type": "468"
+ "type": "470"
},
{
"name": "payload-offset",
@@ -20816,13 +21883,13 @@
},
{
"name": "slots",
- "type": "[509]"
+ "type": "[511]"
}
],
"meta-type": "object"
},
{
- "name": "498",
+ "name": "500",
"meta-type": "enum",
"values": [
"md5",
@@ -20830,7 +21897,7 @@
]
},
{
- "name": "499",
+ "name": "501",
"meta-type": "enum",
"values": [
"qcow",
@@ -20838,7 +21905,7 @@
]
},
{
- "name": "500",
+ "name": "502",
"members": [
{
"name": "key-secret",
@@ -20848,27 +21915,27 @@
{
"name": "cipher-alg",
"default": null,
- "type": "465"
+ "type": "467"
},
{
"name": "cipher-mode",
"default": null,
- "type": "466"
+ "type": "468"
},
{
"name": "ivgen-alg",
"default": null,
- "type": "467"
+ "type": "469"
},
{
"name": "ivgen-hash-alg",
"default": null,
- "type": "468"
+ "type": "470"
},
{
"name": "hash-alg",
"default": null,
- "type": "468"
+ "type": "470"
},
{
"name": "iter-time",
@@ -20879,7 +21946,7 @@
"meta-type": "object"
},
{
- "name": "501",
+ "name": "503",
"meta-type": "enum",
"values": [
"full",
@@ -20887,7 +21954,7 @@
]
},
{
- "name": "502",
+ "name": "504",
"members": [
{
"name": "copies",
@@ -20897,7 +21964,7 @@
"meta-type": "object"
},
{
- "name": "503",
+ "name": "505",
"members": [
{
"name": "data-strips",
@@ -20911,7 +21978,7 @@
"meta-type": "object"
},
{
- "name": "504",
+ "name": "506",
"meta-type": "enum",
"values": [
"left",
@@ -20924,7 +21991,7 @@
]
},
{
- "name": "505",
+ "name": "507",
"meta-type": "enum",
"values": [
"x",
@@ -20932,7 +21999,7 @@
]
},
{
- "name": "506",
+ "name": "508",
"members": [
{
"name": "base",
@@ -20946,12 +22013,12 @@
"meta-type": "object"
},
{
- "name": "507",
+ "name": "509",
"tag": "format",
"variants": [
{
"case": "luks",
- "type": "497"
+ "type": "499"
},
{
"case": "aes",
@@ -20961,18 +22028,18 @@
"members": [
{
"name": "format",
- "type": "458"
+ "type": "460"
}
],
"meta-type": "object"
},
{
- "name": "[508]",
- "element-type": "508",
+ "name": "[510]",
+ "element-type": "510",
"meta-type": "array"
},
{
- "name": "508",
+ "name": "510",
"members": [
{
"name": "name",
@@ -20984,7 +22051,7 @@
},
{
"name": "flags",
- "type": "[510]"
+ "type": "[512]"
}
],
"meta-type": "object"
@@ -20995,12 +22062,12 @@
"meta-type": "array"
},
{
- "name": "[509]",
- "element-type": "509",
+ "name": "[511]",
+ "element-type": "511",
"meta-type": "array"
},
{
- "name": "509",
+ "name": "511",
"members": [
{
"name": "active",
@@ -21024,12 +22091,12 @@
"meta-type": "object"
},
{
- "name": "[510]",
- "element-type": "510",
+ "name": "[512]",
+ "element-type": "512",
"meta-type": "array"
},
{
- "name": "510",
+ "name": "512",
"meta-type": "enum",
"values": [
"in-use",
@@ -21203,6 +22270,7 @@
"xop": false,
"ibpb": false,
"avx": true,
+ "core-capability": false,
"movdiri": false,
"acpi": false,
"avx512bw": false,
@@ -21225,6 +22293,7 @@
"nodeid-msr": false,
"md-clear": true,
"misalignsse": false,
+ "split-lock-detect": false,
"min-xlevel": 2147483656,
"bmi1": true,
"bmi2": true,
@@ -21423,6 +22492,7 @@
"xop": false,
"ibpb": false,
"avx": true,
+ "core-capability": false,
"movdiri": false,
"acpi": false,
"avx512bw": false,
@@ -21445,6 +22515,7 @@
"nodeid-msr": false,
"md-clear": true,
"misalignsse": false,
+ "split-lock-detect": false,
"min-xlevel": 2147483656,
"bmi1": true,
"bmi2": true,
@@ -21534,35 +22605,80 @@
"migration-safe": true
},
{
- "name": "qemu64",
- "typename": "qemu64-x86_64-cpu",
+ "name": "qemu64-v1",
+ "typename": "qemu64-v1-x86_64-cpu",
"unavailable-features": [
],
"static": false,
"migration-safe": true
},
{
- "name": "qemu32",
- "typename": "qemu32-x86_64-cpu",
+ "name": "qemu64",
+ "typename": "qemu64-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "qemu64-v1",
"static": false,
"migration-safe": true
},
{
- "name": "phenom",
- "typename": "phenom-x86_64-cpu",
+ "name": "qemu32-v1",
+ "typename": "qemu32-v1-x86_64-cpu",
"unavailable-features": [
- "fxsr-opt"
],
"static": false,
"migration-safe": true
},
{
- "name": "pentium3",
+ "name": "qemu32",
+ "typename": "qemu32-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "alias-of": "qemu32-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "phenom-v1",
+ "typename": "phenom-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "phenom",
+ "typename": "phenom-x86_64-cpu",
+ "unavailable-features": [
+ "fxsr-opt"
+ ],
+ "alias-of": "phenom-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "pentium3-v1",
+ "typename": "pentium3-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "pentium3",
"typename": "pentium3-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "pentium3-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "pentium2-v1",
+ "typename": "pentium2-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -21571,6 +22687,15 @@
"typename": "pentium2-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "pentium2-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "pentium-v1",
+ "typename": "pentium-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -21579,6 +22704,15 @@
"typename": "pentium-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "pentium-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "n270-v1",
+ "typename": "n270-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -21587,6 +22721,15 @@
"typename": "n270-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "n270-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "kvm64-v1",
+ "typename": "kvm64-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -21595,6 +22738,15 @@
"typename": "kvm64-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "kvm64-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "kvm32-v1",
+ "typename": "kvm32-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -21603,6 +22755,15 @@
"typename": "kvm32-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "kvm32-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "coreduo-v1",
+ "typename": "coreduo-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -21611,6 +22772,15 @@
"typename": "coreduo-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "coreduo-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "core2duo-v1",
+ "typename": "core2duo-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -21619,6 +22789,15 @@
"typename": "core2duo-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "core2duo-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "athlon-v1",
+ "typename": "athlon-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -21627,6 +22806,24 @@
"typename": "athlon-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "athlon-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Westmere-v2",
+ "typename": "Westmere-v2-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Westmere-v1",
+ "typename": "Westmere-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -21636,6 +22833,7 @@
"unavailable-features": [
"spec-ctrl"
],
+ "alias-of": "Westmere-v2",
"static": false,
"migration-safe": true
},
@@ -21643,6 +22841,110 @@
"name": "Westmere",
"typename": "Westmere-x86_64-cpu",
"unavailable-features": [
+ "spec-ctrl"
+ ],
+ "alias-of": "Westmere-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Snowridge-v1",
+ "typename": "Snowridge-v1-x86_64-cpu",
+ "unavailable-features": [
+ "x2apic",
+ "tsc-deadline",
+ "rdseed",
+ "sha-ni",
+ "umip",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "arch-capabilities",
+ "core-capability",
+ "ssbd",
+ "3dnowprefetch",
+ "xsavec",
+ "split-lock-detect"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Snowridge",
+ "typename": "Snowridge-x86_64-cpu",
+ "unavailable-features": [
+ "x2apic",
+ "tsc-deadline",
+ "rdseed",
+ "sha-ni",
+ "umip",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "arch-capabilities",
+ "core-capability",
+ "ssbd",
+ "3dnowprefetch",
+ "xsavec",
+ "split-lock-detect"
+ ],
+ "alias-of": "Snowridge-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Server-v2",
+ "typename": "Skylake-Server-v2-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "hle",
+ "avx2",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "rdseed",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "spec-ctrl",
+ "3dnowprefetch",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Server-v1",
+ "typename": "Skylake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "hle",
+ "avx2",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "rdseed",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "3dnowprefetch",
+ "xsavec"
],
"static": false,
"migration-safe": true
@@ -21671,6 +22973,7 @@
"3dnowprefetch",
"xsavec"
],
+ "alias-of": "Skylake-Server-v2",
"static": false,
"migration-safe": true
},
@@ -21694,6 +22997,51 @@
"avx512cd",
"avx512bw",
"avx512vl",
+ "spec-ctrl",
+ "3dnowprefetch",
+ "xsavec"
+ ],
+ "alias-of": "Skylake-Server-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Client-v2",
+ "typename": "Skylake-Client-v2-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "hle",
+ "avx2",
+ "invpcid",
+ "rtm",
+ "rdseed",
+ "spec-ctrl",
+ "3dnowprefetch",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Client-v1",
+ "typename": "Skylake-Client-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "hle",
+ "avx2",
+ "invpcid",
+ "rtm",
+ "rdseed",
"3dnowprefetch",
"xsavec"
],
@@ -21719,6 +23067,7 @@
"3dnowprefetch",
"xsavec"
],
+ "alias-of": "Skylake-Client-v2",
"static": false,
"migration-safe": true
},
@@ -21737,9 +23086,34 @@
"invpcid",
"rtm",
"rdseed",
+ "spec-ctrl",
"3dnowprefetch",
"xsavec"
],
+ "alias-of": "Skylake-Client-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "SandyBridge-v2",
+ "typename": "SandyBridge-v2-x86_64-cpu",
+ "unavailable-features": [
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "SandyBridge-v1",
+ "typename": "SandyBridge-v1-x86_64-cpu",
+ "unavailable-features": [
+ "x2apic",
+ "tsc-deadline",
+ "avx"
+ ],
"static": false,
"migration-safe": true
},
@@ -21752,6 +23126,7 @@
"avx",
"spec-ctrl"
],
+ "alias-of": "SandyBridge-v2",
"static": false,
"migration-safe": true
},
@@ -21761,7 +23136,17 @@
"unavailable-features": [
"x2apic",
"tsc-deadline",
- "avx"
+ "avx",
+ "spec-ctrl"
+ ],
+ "alias-of": "SandyBridge-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Penryn-v1",
+ "typename": "Penryn-v1-x86_64-cpu",
+ "unavailable-features": [
],
"static": false,
"migration-safe": true
@@ -21771,6 +23156,24 @@
"typename": "Penryn-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Penryn-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G5-v1",
+ "typename": "Opteron_G5-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "avx",
+ "f16c",
+ "misalignsse",
+ "3dnowprefetch",
+ "xop",
+ "fma4",
+ "tbm",
+ "nrip-save"
+ ],
"static": false,
"migration-safe": true
},
@@ -21788,6 +23191,21 @@
"tbm",
"nrip-save"
],
+ "alias-of": "Opteron_G5-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G4-v1",
+ "typename": "Opteron_G4-v1-x86_64-cpu",
+ "unavailable-features": [
+ "avx",
+ "misalignsse",
+ "3dnowprefetch",
+ "xop",
+ "fma4",
+ "nrip-save"
+ ],
"static": false,
"migration-safe": true
},
@@ -21802,6 +23220,16 @@
"fma4",
"nrip-save"
],
+ "alias-of": "Opteron_G4-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G3-v1",
+ "typename": "Opteron_G3-v1-x86_64-cpu",
+ "unavailable-features": [
+ "misalignsse"
+ ],
"static": false,
"migration-safe": true
},
@@ -21811,6 +23239,15 @@
"unavailable-features": [
"misalignsse"
],
+ "alias-of": "Opteron_G3-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G2-v1",
+ "typename": "Opteron_G2-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -21819,6 +23256,15 @@
"typename": "Opteron_G2-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Opteron_G2-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G1-v1",
+ "typename": "Opteron_G1-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -21827,6 +23273,24 @@
"typename": "Opteron_G1-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Opteron_G1-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Nehalem-v2",
+ "typename": "Nehalem-v2-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Nehalem-v1",
+ "typename": "Nehalem-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -21836,6 +23300,7 @@
"unavailable-features": [
"spec-ctrl"
],
+ "alias-of": "Nehalem-v2",
"static": false,
"migration-safe": true
},
@@ -21843,6 +23308,31 @@
"name": "Nehalem",
"typename": "Nehalem-x86_64-cpu",
"unavailable-features": [
+ "spec-ctrl"
+ ],
+ "alias-of": "Nehalem-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "KnightsMill-v1",
+ "typename": "KnightsMill-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "avx2",
+ "avx512f",
+ "rdseed",
+ "avx512pf",
+ "avx512er",
+ "avx512cd",
+ "avx512-vpopcntdq",
+ "avx512-4vnniw",
+ "avx512-4fmaps",
+ "3dnowprefetch"
],
"static": false,
"migration-safe": true
@@ -21867,6 +23357,32 @@
"avx512-4fmaps",
"3dnowprefetch"
],
+ "alias-of": "KnightsMill-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "IvyBridge-v2",
+ "typename": "IvyBridge-v2-x86_64-cpu",
+ "unavailable-features": [
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "IvyBridge-v1",
+ "typename": "IvyBridge-v1-x86_64-cpu",
+ "unavailable-features": [
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c"
+ ],
"static": false,
"migration-safe": true
},
@@ -21880,6 +23396,7 @@
"f16c",
"spec-ctrl"
],
+ "alias-of": "IvyBridge-v2",
"static": false,
"migration-safe": true
},
@@ -21890,14 +23407,196 @@
"x2apic",
"tsc-deadline",
"avx",
- "f16c"
+ "f16c",
+ "spec-ctrl"
+ ],
+ "alias-of": "IvyBridge-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Icelake-Server-v1",
+ "typename": "Icelake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "hle",
+ "avx2",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "rdseed",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "umip",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "ssbd",
+ "3dnowprefetch",
+ "wbnoinvd",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Icelake-Server",
+ "typename": "Icelake-Server-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "hle",
+ "avx2",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "rdseed",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "umip",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "ssbd",
+ "3dnowprefetch",
+ "wbnoinvd",
+ "xsavec"
+ ],
+ "alias-of": "Icelake-Server-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Icelake-Client-v1",
+ "typename": "Icelake-Client-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "hle",
+ "avx2",
+ "invpcid",
+ "rtm",
+ "rdseed",
+ "avx512vbmi",
+ "umip",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "ssbd",
+ "3dnowprefetch",
+ "wbnoinvd",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Icelake-Client",
+ "typename": "Icelake-Client-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "hle",
+ "avx2",
+ "invpcid",
+ "rtm",
+ "rdseed",
+ "avx512vbmi",
+ "umip",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "ssbd",
+ "3dnowprefetch",
+ "wbnoinvd",
+ "xsavec"
+ ],
+ "alias-of": "Icelake-Client-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Haswell-v4",
+ "typename": "Haswell-v4-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "avx2",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Haswell-v3",
+ "typename": "Haswell-v3-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "hle",
+ "avx2",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
],
"static": false,
"migration-safe": true
},
{
- "name": "Icelake-Server",
- "typename": "Icelake-Server-x86_64-cpu",
+ "name": "Haswell-v2",
+ "typename": "Haswell-v2-x86_64-cpu",
"unavailable-features": [
"fma",
"pcid",
@@ -21905,37 +23604,15 @@
"tsc-deadline",
"avx",
"f16c",
- "hle",
"avx2",
- "invpcid",
- "rtm",
- "avx512f",
- "avx512dq",
- "rdseed",
- "avx512cd",
- "avx512bw",
- "avx512vl",
- "avx512vbmi",
- "umip",
- "avx512vbmi2",
- "gfni",
- "vaes",
- "vpclmulqdq",
- "avx512vnni",
- "avx512bitalg",
- "avx512-vpopcntdq",
- "spec-ctrl",
- "ssbd",
- "3dnowprefetch",
- "wbnoinvd",
- "xsavec"
+ "invpcid"
],
"static": false,
"migration-safe": true
},
{
- "name": "Icelake-Client",
- "typename": "Icelake-Client-x86_64-cpu",
+ "name": "Haswell-v1",
+ "typename": "Haswell-v1-x86_64-cpu",
"unavailable-features": [
"fma",
"pcid",
@@ -21946,22 +23623,7 @@
"hle",
"avx2",
"invpcid",
- "rtm",
- "rdseed",
- "avx512vbmi",
- "umip",
- "avx512vbmi2",
- "gfni",
- "vaes",
- "vpclmulqdq",
- "avx512vnni",
- "avx512bitalg",
- "avx512-vpopcntdq",
- "spec-ctrl",
- "ssbd",
- "3dnowprefetch",
- "wbnoinvd",
- "xsavec"
+ "rtm"
],
"static": false,
"migration-safe": true
@@ -21980,6 +23642,7 @@
"invpcid",
"spec-ctrl"
],
+ "alias-of": "Haswell-v4",
"static": false,
"migration-safe": true
},
@@ -21996,6 +23659,7 @@
"avx2",
"invpcid"
],
+ "alias-of": "Haswell-v2",
"static": false,
"migration-safe": true
},
@@ -22015,6 +23679,7 @@
"rtm",
"spec-ctrl"
],
+ "alias-of": "Haswell-v3",
"static": false,
"migration-safe": true
},
@@ -22028,10 +23693,53 @@
"tsc-deadline",
"avx",
"f16c",
- "hle",
"avx2",
"invpcid",
- "rtm"
+ "spec-ctrl"
+ ],
+ "alias-of": "Haswell-v4",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "EPYC-v2",
+ "typename": "EPYC-v2-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "avx",
+ "f16c",
+ "avx2",
+ "rdseed",
+ "sha-ni",
+ "fxsr-opt",
+ "misalignsse",
+ "3dnowprefetch",
+ "osvw",
+ "topoext",
+ "ibpb",
+ "nrip-save",
+ "xsavec"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "EPYC-v1",
+ "typename": "EPYC-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "avx",
+ "f16c",
+ "avx2",
+ "rdseed",
+ "sha-ni",
+ "fxsr-opt",
+ "misalignsse",
+ "3dnowprefetch",
+ "osvw",
+ "topoext",
+ "nrip-save",
+ "xsavec"
],
"static": false,
"migration-safe": true
@@ -22055,6 +23763,7 @@
"nrip-save",
"xsavec"
],
+ "alias-of": "EPYC-v2",
"static": false,
"migration-safe": true
},
@@ -22073,6 +23782,29 @@
"3dnowprefetch",
"osvw",
"topoext",
+ "ibpb",
+ "nrip-save",
+ "xsavec"
+ ],
+ "alias-of": "EPYC-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Dhyana-v1",
+ "typename": "Dhyana-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "avx",
+ "f16c",
+ "avx2",
+ "rdseed",
+ "fxsr-opt",
+ "misalignsse",
+ "3dnowprefetch",
+ "osvw",
+ "topoext",
+ "ibpb",
"nrip-save",
"xsavec"
],
@@ -22097,6 +23829,15 @@
"nrip-save",
"xsavec"
],
+ "alias-of": "Dhyana-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Conroe-v1",
+ "typename": "Conroe-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -22105,6 +23846,70 @@
"typename": "Conroe-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "Conroe-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Cascadelake-Server-v2",
+ "typename": "Cascadelake-Server-v2-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "hle",
+ "avx2",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "rdseed",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vnni",
+ "spec-ctrl",
+ "arch-capabilities",
+ "ssbd",
+ "3dnowprefetch",
+ "xsavec",
+ "rdctl-no",
+ "ibrs-all",
+ "skip-l1dfl-vmentry",
+ "mds-no"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Cascadelake-Server-v1",
+ "typename": "Cascadelake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "hle",
+ "avx2",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "rdseed",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vnni",
+ "spec-ctrl",
+ "ssbd",
+ "3dnowprefetch",
+ "xsavec"
+ ],
"static": false,
"migration-safe": true
},
@@ -22130,9 +23935,93 @@
"avx512vl",
"avx512vnni",
"spec-ctrl",
+ "arch-capabilities",
"ssbd",
"3dnowprefetch",
- "xsavec"
+ "xsavec",
+ "rdctl-no",
+ "ibrs-all",
+ "skip-l1dfl-vmentry",
+ "mds-no"
+ ],
+ "alias-of": "Cascadelake-Server-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-v4",
+ "typename": "Broadwell-v4-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "avx2",
+ "invpcid",
+ "rdseed",
+ "spec-ctrl",
+ "3dnowprefetch"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-v3",
+ "typename": "Broadwell-v3-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "hle",
+ "avx2",
+ "invpcid",
+ "rtm",
+ "rdseed",
+ "spec-ctrl",
+ "3dnowprefetch"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-v2",
+ "typename": "Broadwell-v2-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "avx2",
+ "invpcid",
+ "rdseed",
+ "3dnowprefetch"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-v1",
+ "typename": "Broadwell-v1-x86_64-cpu",
+ "unavailable-features": [
+ "fma",
+ "pcid",
+ "x2apic",
+ "tsc-deadline",
+ "avx",
+ "f16c",
+ "hle",
+ "avx2",
+ "invpcid",
+ "rtm",
+ "rdseed",
+ "3dnowprefetch"
],
"static": false,
"migration-safe": true
@@ -22153,6 +24042,7 @@
"spec-ctrl",
"3dnowprefetch"
],
+ "alias-of": "Broadwell-v4",
"static": false,
"migration-safe": true
},
@@ -22171,6 +24061,7 @@
"rdseed",
"3dnowprefetch"
],
+ "alias-of": "Broadwell-v2",
"static": false,
"migration-safe": true
},
@@ -22192,6 +24083,7 @@
"spec-ctrl",
"3dnowprefetch"
],
+ "alias-of": "Broadwell-v3",
"static": false,
"migration-safe": true
},
@@ -22205,13 +24097,21 @@
"tsc-deadline",
"avx",
"f16c",
- "hle",
"avx2",
"invpcid",
- "rtm",
"rdseed",
+ "spec-ctrl",
"3dnowprefetch"
],
+ "alias-of": "Broadwell-v4",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "486-v1",
+ "typename": "486-v1-x86_64-cpu",
+ "unavailable-features": [
+ ],
"static": false,
"migration-safe": true
},
@@ -22220,6 +24120,7 @@
"typename": "486-x86_64-cpu",
"unavailable-features": [
],
+ "alias-of": "486-v1",
"static": false,
"migration-safe": true
}
@@ -22377,6 +24278,7 @@
"xop": false,
"ibpb": false,
"avx": false,
+ "core-capability": false,
"movdiri": false,
"acpi": true,
"avx512bw": false,
@@ -22399,6 +24301,7 @@
"nodeid-msr": false,
"md-clear": false,
"misalignsse": false,
+ "split-lock-detect": false,
"min-xlevel": 2147483658,
"bmi1": true,
"bmi2": true,
@@ -22597,6 +24500,7 @@
"xop": false,
"ibpb": false,
"avx": false,
+ "core-capability": false,
"movdiri": false,
"acpi": true,
"avx512bw": false,
@@ -22619,6 +24523,7 @@
"nodeid-msr": false,
"md-clear": false,
"misalignsse": false,
+ "split-lock-detect": false,
"min-xlevel": 2147483658,
"bmi1": true,
"bmi2": true,
diff --git a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml
index 5d4540b3f7..660ead8555 100644
--- a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml
@@ -211,10 +211,10 @@
<flag name='migration-file-drop-cache'/>
<flag name='vhost-user-gpu'/>
<flag name='vhost-user-vga'/>
- <version>4000050</version>
+ <version>4001000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100759</microcodeVersion>
- <package>v4.0.0-1481-g33d6099906</package>
+ <package>v4.1.0</package>
<arch>x86_64</arch>
<hostCPU type='kvm' model='base' migratability='yes'>
<property name='cmov' type='boolean' value='true' migratable='yes'/>
@@ -351,6 +351,7 @@
<property name='xop' type='boolean' value='false'/>
<property name='ibpb' type='boolean' value='false'/>
<property name='avx' type='boolean' value='true' migratable='yes'/>
+ <property name='core-capability' 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'/>
@@ -373,6 +374,7 @@
<property name='nodeid-msr' type='boolean' value='false'/>
<property name='md-clear' type='boolean' value='true' migratable='yes'/>
<property name='misalignsse' type='boolean' value='false'/>
+ <property name='split-lock-detect' type='boolean' value='false'/>
<property name='min-xlevel' type='number' value='2147483656'/>
<property name='bmi1' type='boolean' value='true' migratable='yes'/>
<property name='bmi2' type='boolean' value='true' migratable='yes'/>
@@ -548,6 +550,7 @@
<property name='xop' type='boolean' value='false'/>
<property name='ibpb' type='boolean' value='false'/>
<property name='avx' type='boolean' value='false'/>
+ <property name='core-capability' 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'/>
@@ -570,6 +573,7 @@
<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'/>
@@ -613,8 +617,18 @@
<cpu type='kvm' name='max' usable='yes'/>
<cpu type='kvm' name='host' usable='yes'/>
<cpu type='kvm' name='base' usable='yes'/>
+ <cpu type='kvm' name='qemu64-v1' usable='yes'/>
<cpu type='kvm' name='qemu64' usable='yes'/>
+ <cpu type='kvm' name='qemu32-v1' usable='yes'/>
<cpu type='kvm' name='qemu32' usable='yes'/>
+ <cpu type='kvm' name='phenom-v1' usable='no'>
+ <blocker name='mmxext'/>
+ <blocker name='fxsr-opt'/>
+ <blocker name='3dnowext'/>
+ <blocker name='3dnow'/>
+ <blocker name='sse4a'/>
+ <blocker name='npt'/>
+ </cpu>
<cpu type='kvm' name='phenom' usable='no'>
<blocker name='mmxext'/>
<blocker name='fxsr-opt'/>
@@ -623,21 +637,82 @@
<blocker name='sse4a'/>
<blocker name='npt'/>
</cpu>
+ <cpu type='kvm' name='pentium3-v1' usable='yes'/>
<cpu type='kvm' name='pentium3' usable='yes'/>
+ <cpu type='kvm' name='pentium2-v1' usable='yes'/>
<cpu type='kvm' name='pentium2' usable='yes'/>
+ <cpu type='kvm' name='pentium-v1' usable='yes'/>
<cpu type='kvm' name='pentium' usable='yes'/>
+ <cpu type='kvm' name='n270-v1' usable='yes'/>
<cpu type='kvm' name='n270' usable='yes'/>
+ <cpu type='kvm' name='kvm64-v1' usable='yes'/>
<cpu type='kvm' name='kvm64' usable='yes'/>
+ <cpu type='kvm' name='kvm32-v1' usable='yes'/>
<cpu type='kvm' name='kvm32' usable='yes'/>
+ <cpu type='kvm' name='coreduo-v1' usable='yes'/>
<cpu type='kvm' name='coreduo' usable='yes'/>
+ <cpu type='kvm' name='core2duo-v1' usable='yes'/>
<cpu type='kvm' name='core2duo' usable='yes'/>
+ <cpu type='kvm' name='athlon-v1' usable='no'>
+ <blocker name='mmxext'/>
+ <blocker name='3dnowext'/>
+ <blocker name='3dnow'/>
+ </cpu>
<cpu type='kvm' name='athlon' usable='no'>
<blocker name='mmxext'/>
<blocker name='3dnowext'/>
<blocker name='3dnow'/>
</cpu>
+ <cpu type='kvm' name='Westmere-v2' usable='yes'/>
+ <cpu type='kvm' name='Westmere-v1' usable='yes'/>
<cpu type='kvm' name='Westmere-IBRS' usable='yes'/>
<cpu type='kvm' name='Westmere' usable='yes'/>
+ <cpu type='kvm' name='Snowridge-v1' usable='no'>
+ <blocker name='clwb'/>
+ <blocker name='sha-ni'/>
+ <blocker name='gfni'/>
+ <blocker name='cldemote'/>
+ <blocker name='movdiri'/>
+ <blocker name='movdir64b'/>
+ <blocker name='core-capability'/>
+ <blocker name='split-lock-detect'/>
+ </cpu>
+ <cpu type='kvm' name='Snowridge' usable='no'>
+ <blocker name='clwb'/>
+ <blocker name='sha-ni'/>
+ <blocker name='gfni'/>
+ <blocker name='cldemote'/>
+ <blocker name='movdiri'/>
+ <blocker name='movdir64b'/>
+ <blocker name='core-capability'/>
+ <blocker name='split-lock-detect'/>
+ </cpu>
+ <cpu type='kvm' name='Skylake-Server-v2' usable='no'>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='clwb'/>
+ <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-v1' usable='no'>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='clwb'/>
+ <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-IBRS' usable='no'>
<blocker name='avx512f'/>
<blocker name='avx512dq'/>
@@ -664,11 +739,25 @@
<blocker name='avx512f'/>
<blocker name='pku'/>
</cpu>
+ <cpu type='kvm' name='Skylake-Client-v2' usable='yes'/>
+ <cpu type='kvm' name='Skylake-Client-v1' usable='yes'/>
<cpu type='kvm' name='Skylake-Client-IBRS' usable='yes'/>
<cpu type='kvm' name='Skylake-Client' usable='yes'/>
+ <cpu type='kvm' name='SandyBridge-v2' usable='yes'/>
+ <cpu type='kvm' name='SandyBridge-v1' usable='yes'/>
<cpu type='kvm' name='SandyBridge-IBRS' usable='yes'/>
<cpu type='kvm' name='SandyBridge' usable='yes'/>
+ <cpu type='kvm' name='Penryn-v1' usable='yes'/>
<cpu type='kvm' name='Penryn' usable='yes'/>
+ <cpu type='kvm' name='Opteron_G5-v1' usable='no'>
+ <blocker name='sse4a'/>
+ <blocker name='misalignsse'/>
+ <blocker name='xop'/>
+ <blocker name='fma4'/>
+ <blocker name='tbm'/>
+ <blocker name='npt'/>
+ <blocker name='nrip-save'/>
+ </cpu>
<cpu type='kvm' name='Opteron_G5' usable='no'>
<blocker name='sse4a'/>
<blocker name='misalignsse'/>
@@ -678,6 +767,14 @@
<blocker name='npt'/>
<blocker name='nrip-save'/>
</cpu>
+ <cpu type='kvm' name='Opteron_G4-v1' usable='no'>
+ <blocker name='sse4a'/>
+ <blocker name='misalignsse'/>
+ <blocker name='xop'/>
+ <blocker name='fma4'/>
+ <blocker name='npt'/>
+ <blocker name='nrip-save'/>
+ </cpu>
<cpu type='kvm' name='Opteron_G4' usable='no'>
<blocker name='sse4a'/>
<blocker name='misalignsse'/>
@@ -686,14 +783,34 @@
<blocker name='npt'/>
<blocker name='nrip-save'/>
</cpu>
+ <cpu type='kvm' name='Opteron_G3-v1' usable='no'>
+ <blocker name='sse4a'/>
+ <blocker name='misalignsse'/>
+ </cpu>
<cpu type='kvm' name='Opteron_G3' usable='no'>
<blocker name='sse4a'/>
<blocker name='misalignsse'/>
</cpu>
+ <cpu type='kvm' name='Opteron_G2-v1' usable='yes'/>
<cpu type='kvm' name='Opteron_G2' usable='yes'/>
+ <cpu type='kvm' name='Opteron_G1-v1' usable='yes'/>
<cpu type='kvm' name='Opteron_G1' usable='yes'/>
+ <cpu type='kvm' name='Nehalem-v2' usable='yes'/>
+ <cpu type='kvm' name='Nehalem-v1' usable='yes'/>
<cpu type='kvm' name='Nehalem-IBRS' usable='yes'/>
<cpu type='kvm' name='Nehalem' usable='yes'/>
+ <cpu type='kvm' name='KnightsMill-v1' usable='no'>
+ <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' usable='no'>
<blocker name='avx512f'/>
<blocker name='avx512pf'/>
@@ -706,8 +823,33 @@
<blocker name='avx512f'/>
<blocker name='avx512f'/>
</cpu>
+ <cpu type='kvm' name='IvyBridge-v2' usable='yes'/>
+ <cpu type='kvm' name='IvyBridge-v1' usable='yes'/>
<cpu type='kvm' name='IvyBridge-IBRS' usable='yes'/>
<cpu type='kvm' name='IvyBridge' usable='yes'/>
+ <cpu type='kvm' name='Icelake-Server-v1' usable='no'>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='clwb'/>
+ <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='wbnoinvd'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
<cpu type='kvm' name='Icelake-Server' usable='no'>
<blocker name='avx512f'/>
<blocker name='avx512dq'/>
@@ -731,6 +873,19 @@
<blocker name='avx512f'/>
<blocker name='pku'/>
</cpu>
+ <cpu type='kvm' name='Icelake-Client-v1' usable='no'>
+ <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='wbnoinvd'/>
+ <blocker name='pku'/>
+ </cpu>
<cpu type='kvm' name='Icelake-Client' usable='no'>
<blocker name='avx512vbmi'/>
<blocker name='pku'/>
@@ -744,10 +899,37 @@
<blocker name='wbnoinvd'/>
<blocker name='pku'/>
</cpu>
+ <cpu type='kvm' name='Haswell-v4' usable='yes'/>
+ <cpu type='kvm' name='Haswell-v3' usable='yes'/>
+ <cpu type='kvm' name='Haswell-v2' usable='yes'/>
+ <cpu type='kvm' name='Haswell-v1' usable='yes'/>
<cpu type='kvm' name='Haswell-noTSX-IBRS' usable='yes'/>
<cpu type='kvm' name='Haswell-noTSX' usable='yes'/>
<cpu type='kvm' name='Haswell-IBRS' usable='yes'/>
<cpu type='kvm' name='Haswell' usable='yes'/>
+ <cpu type='kvm' name='EPYC-v2' usable='no'>
+ <blocker name='sha-ni'/>
+ <blocker name='mmxext'/>
+ <blocker name='fxsr-opt'/>
+ <blocker name='cr8legacy'/>
+ <blocker name='sse4a'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='ibpb'/>
+ <blocker name='npt'/>
+ <blocker name='nrip-save'/>
+ </cpu>
+ <cpu type='kvm' name='EPYC-v1' usable='no'>
+ <blocker name='sha-ni'/>
+ <blocker name='mmxext'/>
+ <blocker name='fxsr-opt'/>
+ <blocker name='cr8legacy'/>
+ <blocker name='sse4a'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='npt'/>
+ <blocker name='nrip-save'/>
+ </cpu>
<cpu type='kvm' name='EPYC-IBPB' usable='no'>
<blocker name='sha-ni'/>
<blocker name='mmxext'/>
@@ -768,6 +950,18 @@
<blocker name='sse4a'/>
<blocker name='misalignsse'/>
<blocker name='osvw'/>
+ <blocker name='ibpb'/>
+ <blocker name='npt'/>
+ <blocker name='nrip-save'/>
+ </cpu>
+ <cpu type='kvm' name='Dhyana-v1' usable='no'>
+ <blocker name='mmxext'/>
+ <blocker name='fxsr-opt'/>
+ <blocker name='cr8legacy'/>
+ <blocker name='sse4a'/>
+ <blocker name='misalignsse'/>
+ <blocker name='osvw'/>
+ <blocker name='ibpb'/>
<blocker name='npt'/>
<blocker name='nrip-save'/>
</cpu>
@@ -782,7 +976,39 @@
<blocker name='npt'/>
<blocker name='nrip-save'/>
</cpu>
+ <cpu type='kvm' name='Conroe-v1' usable='yes'/>
<cpu type='kvm' name='Conroe' usable='yes'/>
+ <cpu type='kvm' name='Cascadelake-Server-v2' usable='no'>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='clwb'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ <blocker name='rdctl-no'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='mds-no'/>
+ </cpu>
+ <cpu type='kvm' name='Cascadelake-Server-v1' usable='no'>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='clwb'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='pku'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512f'/>
+ <blocker name='pku'/>
+ </cpu>
<cpu type='kvm' name='Cascadelake-Server' usable='no'>
<blocker name='avx512f'/>
<blocker name='avx512dq'/>
@@ -796,36 +1022,100 @@
<blocker name='avx512f'/>
<blocker name='avx512f'/>
<blocker name='pku'/>
+ <blocker name='rdctl-no'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='mds-no'/>
</cpu>
+ <cpu type='kvm' name='Broadwell-v4' usable='yes'/>
+ <cpu type='kvm' name='Broadwell-v3' usable='yes'/>
+ <cpu type='kvm' name='Broadwell-v2' usable='yes'/>
+ <cpu type='kvm' name='Broadwell-v1' usable='yes'/>
<cpu type='kvm' name='Broadwell-noTSX-IBRS' usable='yes'/>
<cpu type='kvm' name='Broadwell-noTSX' usable='yes'/>
<cpu type='kvm' name='Broadwell-IBRS' usable='yes'/>
<cpu type='kvm' name='Broadwell' usable='yes'/>
+ <cpu type='kvm' name='486-v1' usable='yes'/>
<cpu type='kvm' name='486' usable='yes'/>
<cpu type='tcg' name='max' usable='yes'/>
<cpu type='tcg' name='host' usable='no'>
<blocker name='kvm'/>
</cpu>
<cpu type='tcg' name='base' usable='yes'/>
+ <cpu type='tcg' name='qemu64-v1' usable='yes'/>
<cpu type='tcg' name='qemu64' usable='yes'/>
+ <cpu type='tcg' name='qemu32-v1' usable='yes'/>
<cpu type='tcg' name='qemu32' usable='yes'/>
+ <cpu type='tcg' name='phenom-v1' usable='no'>
+ <blocker name='fxsr-opt'/>
+ </cpu>
<cpu type='tcg' name='phenom' usable='no'>
<blocker name='fxsr-opt'/>
</cpu>
+ <cpu type='tcg' name='pentium3-v1' usable='yes'/>
<cpu type='tcg' name='pentium3' usable='yes'/>
+ <cpu type='tcg' name='pentium2-v1' usable='yes'/>
<cpu type='tcg' name='pentium2' usable='yes'/>
+ <cpu type='tcg' name='pentium-v1' usable='yes'/>
<cpu type='tcg' name='pentium' usable='yes'/>
+ <cpu type='tcg' name='n270-v1' usable='yes'/>
<cpu type='tcg' name='n270' usable='yes'/>
+ <cpu type='tcg' name='kvm64-v1' usable='yes'/>
<cpu type='tcg' name='kvm64' usable='yes'/>
+ <cpu type='tcg' name='kvm32-v1' usable='yes'/>
<cpu type='tcg' name='kvm32' usable='yes'/>
+ <cpu type='tcg' name='coreduo-v1' usable='yes'/>
<cpu type='tcg' name='coreduo' usable='yes'/>
+ <cpu type='tcg' name='core2duo-v1' usable='yes'/>
<cpu type='tcg' name='core2duo' usable='yes'/>
+ <cpu type='tcg' name='athlon-v1' usable='yes'/>
<cpu type='tcg' name='athlon' usable='yes'/>
+ <cpu type='tcg' name='Westmere-v2' usable='no'>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Westmere-v1' usable='yes'/>
<cpu type='tcg' name='Westmere-IBRS' usable='no'>
<blocker name='spec-ctrl'/>
</cpu>
- <cpu type='tcg' name='Westmere' usable='yes'/>
- <cpu type='tcg' name='Skylake-Server-IBRS' usable='no'>
+ <cpu type='tcg' name='Westmere' usable='no'>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Snowridge-v1' usable='no'>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='rdseed'/>
+ <blocker name='sha-ni'/>
+ <blocker name='umip'/>
+ <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='3dnowprefetch'/>
+ <blocker name='xsavec'/>
+ <blocker name='split-lock-detect'/>
+ </cpu>
+ <cpu type='tcg' name='Snowridge' usable='no'>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='rdseed'/>
+ <blocker name='sha-ni'/>
+ <blocker name='umip'/>
+ <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='3dnowprefetch'/>
+ <blocker name='xsavec'/>
+ <blocker name='split-lock-detect'/>
+ </cpu>
+ <cpu type='tcg' name='Skylake-Server-v2' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
@@ -846,7 +1136,7 @@
<blocker name='3dnowprefetch'/>
<blocker name='xsavec'/>
</cpu>
- <cpu type='tcg' name='Skylake-Server' usable='no'>
+ <cpu type='tcg' name='Skylake-Server-v1' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
@@ -866,7 +1156,7 @@
<blocker name='3dnowprefetch'/>
<blocker name='xsavec'/>
</cpu>
- <cpu type='tcg' name='Skylake-Client-IBRS' usable='no'>
+ <cpu type='tcg' name='Skylake-Server-IBRS' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
@@ -877,12 +1167,17 @@
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
<blocker name='rdseed'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
<blocker name='spec-ctrl'/>
<blocker name='3dnowprefetch'/>
<blocker name='xsavec'/>
</cpu>
- <cpu type='tcg' name='Skylake-Client' usable='no'>
+ <cpu type='tcg' name='Skylake-Server' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
@@ -893,50 +1188,179 @@
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
<blocker name='rdseed'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='spec-ctrl'/>
<blocker name='3dnowprefetch'/>
<blocker name='xsavec'/>
</cpu>
- <cpu type='tcg' name='SandyBridge-IBRS' usable='no'>
+ <cpu type='tcg' name='Skylake-Client-v2' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='hle'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='rdseed'/>
<blocker name='spec-ctrl'/>
+ <blocker name='3dnowprefetch'/>
+ <blocker name='xsavec'/>
</cpu>
- <cpu type='tcg' name='SandyBridge' usable='no'>
+ <cpu type='tcg' name='Skylake-Client-v1' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='hle'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='rdseed'/>
+ <blocker name='3dnowprefetch'/>
+ <blocker name='xsavec'/>
</cpu>
- <cpu type='tcg' name='Penryn' usable='yes'/>
- <cpu type='tcg' name='Opteron_G5' usable='no'>
+ <cpu type='tcg' name='Skylake-Client-IBRS' usable='no'>
<blocker name='fma'/>
+ <blocker name='pcid'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
- <blocker name='misalignsse'/>
+ <blocker name='hle'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='rdseed'/>
+ <blocker name='spec-ctrl'/>
<blocker name='3dnowprefetch'/>
- <blocker name='xop'/>
- <blocker name='fma4'/>
- <blocker name='tbm'/>
- <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
</cpu>
- <cpu type='tcg' name='Opteron_G4' usable='no'>
+ <cpu type='tcg' name='Skylake-Client' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
<blocker name='avx'/>
- <blocker name='misalignsse'/>
+ <blocker name='f16c'/>
+ <blocker name='hle'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='rdseed'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='3dnowprefetch'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='SandyBridge-v2' usable='no'>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='SandyBridge-v1' usable='no'>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ </cpu>
+ <cpu type='tcg' name='SandyBridge-IBRS' usable='no'>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='SandyBridge' usable='no'>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Penryn-v1' usable='yes'/>
+ <cpu type='tcg' name='Penryn' usable='yes'/>
+ <cpu type='tcg' name='Opteron_G5-v1' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='misalignsse'/>
<blocker name='3dnowprefetch'/>
<blocker name='xop'/>
<blocker name='fma4'/>
+ <blocker name='tbm'/>
<blocker name='nrip-save'/>
</cpu>
+ <cpu type='tcg' name='Opteron_G5' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='misalignsse'/>
+ <blocker name='3dnowprefetch'/>
+ <blocker name='xop'/>
+ <blocker name='fma4'/>
+ <blocker name='tbm'/>
+ <blocker name='nrip-save'/>
+ </cpu>
+ <cpu type='tcg' name='Opteron_G4-v1' usable='no'>
+ <blocker name='avx'/>
+ <blocker name='misalignsse'/>
+ <blocker name='3dnowprefetch'/>
+ <blocker name='xop'/>
+ <blocker name='fma4'/>
+ <blocker name='nrip-save'/>
+ </cpu>
+ <cpu type='tcg' name='Opteron_G4' usable='no'>
+ <blocker name='avx'/>
+ <blocker name='misalignsse'/>
+ <blocker name='3dnowprefetch'/>
+ <blocker name='xop'/>
+ <blocker name='fma4'/>
+ <blocker name='nrip-save'/>
+ </cpu>
+ <cpu type='tcg' name='Opteron_G3-v1' usable='no'>
+ <blocker name='misalignsse'/>
+ </cpu>
<cpu type='tcg' name='Opteron_G3' usable='no'>
<blocker name='misalignsse'/>
</cpu>
+ <cpu type='tcg' name='Opteron_G2-v1' usable='yes'/>
<cpu type='tcg' name='Opteron_G2' usable='yes'/>
+ <cpu type='tcg' name='Opteron_G1-v1' usable='yes'/>
<cpu type='tcg' name='Opteron_G1' usable='yes'/>
+ <cpu type='tcg' name='Nehalem-v2' usable='no'>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Nehalem-v1' usable='yes'/>
<cpu type='tcg' name='Nehalem-IBRS' usable='no'>
<blocker name='spec-ctrl'/>
</cpu>
- <cpu type='tcg' name='Nehalem' usable='yes'/>
+ <cpu type='tcg' name='Nehalem' usable='no'>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='KnightsMill-v1' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='avx2'/>
+ <blocker name='avx512f'/>
+ <blocker name='rdseed'/>
+ <blocker name='avx512pf'/>
+ <blocker name='avx512er'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='avx512-4vnniw'/>
+ <blocker name='avx512-4fmaps'/>
+ <blocker name='3dnowprefetch'/>
+ </cpu>
<cpu type='tcg' name='KnightsMill' usable='no'>
<blocker name='fma'/>
<blocker name='x2apic'/>
@@ -954,6 +1378,19 @@
<blocker name='avx512-4fmaps'/>
<blocker name='3dnowprefetch'/>
</cpu>
+ <cpu type='tcg' name='IvyBridge-v2' usable='no'>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='IvyBridge-v1' usable='no'>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ </cpu>
<cpu type='tcg' name='IvyBridge-IBRS' usable='no'>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
@@ -966,6 +1403,39 @@
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Icelake-Server-v1' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='hle'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='rdseed'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='umip'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='ssbd'/>
+ <blocker name='3dnowprefetch'/>
+ <blocker name='wbnoinvd'/>
+ <blocker name='xsavec'/>
</cpu>
<cpu type='tcg' name='Icelake-Server' usable='no'>
<blocker name='fma'/>
@@ -999,6 +1469,33 @@
<blocker name='wbnoinvd'/>
<blocker name='xsavec'/>
</cpu>
+ <cpu type='tcg' name='Icelake-Client-v1' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='hle'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='rdseed'/>
+ <blocker name='avx512vbmi'/>
+ <blocker name='umip'/>
+ <blocker name='avx512vbmi2'/>
+ <blocker name='gfni'/>
+ <blocker name='vaes'/>
+ <blocker name='vpclmulqdq'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='avx512bitalg'/>
+ <blocker name='avx512-vpopcntdq'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='ssbd'/>
+ <blocker name='3dnowprefetch'/>
+ <blocker name='wbnoinvd'/>
+ <blocker name='xsavec'/>
+ </cpu>
<cpu type='tcg' name='Icelake-Client' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
@@ -1026,6 +1523,52 @@
<blocker name='wbnoinvd'/>
<blocker name='xsavec'/>
</cpu>
+ <cpu type='tcg' name='Haswell-v4' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Haswell-v3' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='hle'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='Haswell-v2' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ </cpu>
+ <cpu type='tcg' name='Haswell-v1' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='hle'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ </cpu>
<cpu type='tcg' name='Haswell-noTSX-IBRS' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
@@ -1067,10 +1610,40 @@
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
- <blocker name='hle'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
- <blocker name='rtm'/>
+ <blocker name='spec-ctrl'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-v2' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='avx2'/>
+ <blocker name='rdseed'/>
+ <blocker name='sha-ni'/>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='3dnowprefetch'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='ibpb'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='EPYC-v1' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='avx2'/>
+ <blocker name='rdseed'/>
+ <blocker name='sha-ni'/>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='3dnowprefetch'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
</cpu>
<cpu type='tcg' name='EPYC-IBPB' usable='no'>
<blocker name='fma'/>
@@ -1100,6 +1673,22 @@
<blocker name='3dnowprefetch'/>
<blocker name='osvw'/>
<blocker name='topoext'/>
+ <blocker name='ibpb'/>
+ <blocker name='nrip-save'/>
+ <blocker name='xsavec'/>
+ </cpu>
+ <cpu type='tcg' name='Dhyana-v1' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='avx2'/>
+ <blocker name='rdseed'/>
+ <blocker name='fxsr-opt'/>
+ <blocker name='misalignsse'/>
+ <blocker name='3dnowprefetch'/>
+ <blocker name='osvw'/>
+ <blocker name='topoext'/>
+ <blocker name='ibpb'/>
<blocker name='nrip-save'/>
<blocker name='xsavec'/>
</cpu>
@@ -1118,7 +1707,59 @@
<blocker name='nrip-save'/>
<blocker name='xsavec'/>
</cpu>
+ <cpu type='tcg' name='Conroe-v1' usable='yes'/>
<cpu type='tcg' name='Conroe' usable='yes'/>
+ <cpu type='tcg' name='Cascadelake-Server-v2' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='hle'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='rdseed'/>
+ <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='3dnowprefetch'/>
+ <blocker name='xsavec'/>
+ <blocker name='rdctl-no'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='skip-l1dfl-vmentry'/>
+ <blocker name='mds-no'/>
+ </cpu>
+ <cpu type='tcg' name='Cascadelake-Server-v1' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='hle'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='avx512f'/>
+ <blocker name='avx512dq'/>
+ <blocker name='rdseed'/>
+ <blocker name='avx512cd'/>
+ <blocker name='avx512bw'/>
+ <blocker name='avx512vl'/>
+ <blocker name='avx512vnni'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='ssbd'/>
+ <blocker name='3dnowprefetch'/>
+ <blocker name='xsavec'/>
+ </cpu>
<cpu type='tcg' name='Cascadelake-Server' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
@@ -1138,9 +1779,68 @@
<blocker name='avx512vl'/>
<blocker name='avx512vnni'/>
<blocker name='spec-ctrl'/>
+ <blocker name='arch-capabilities'/>
<blocker name='ssbd'/>
<blocker name='3dnowprefetch'/>
<blocker name='xsavec'/>
+ <blocker name='rdctl-no'/>
+ <blocker name='ibrs-all'/>
+ <blocker name='skip-l1dfl-vmentry'/>
+ <blocker name='mds-no'/>
+ </cpu>
+ <cpu type='tcg' name='Broadwell-v4' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='rdseed'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='3dnowprefetch'/>
+ </cpu>
+ <cpu type='tcg' name='Broadwell-v3' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='hle'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='rdseed'/>
+ <blocker name='spec-ctrl'/>
+ <blocker name='3dnowprefetch'/>
+ </cpu>
+ <cpu type='tcg' name='Broadwell-v2' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='rdseed'/>
+ <blocker name='3dnowprefetch'/>
+ </cpu>
+ <cpu type='tcg' name='Broadwell-v1' usable='no'>
+ <blocker name='fma'/>
+ <blocker name='pcid'/>
+ <blocker name='x2apic'/>
+ <blocker name='tsc-deadline'/>
+ <blocker name='avx'/>
+ <blocker name='f16c'/>
+ <blocker name='hle'/>
+ <blocker name='avx2'/>
+ <blocker name='invpcid'/>
+ <blocker name='rtm'/>
+ <blocker name='rdseed'/>
+ <blocker name='3dnowprefetch'/>
</cpu>
<cpu type='tcg' name='Broadwell-noTSX-IBRS' usable='no'>
<blocker name='fma'/>
@@ -1189,13 +1889,13 @@
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
- <blocker name='hle'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
- <blocker name='rtm'/>
<blocker name='rdseed'/>
+ <blocker name='spec-ctrl'/>
<blocker name='3dnowprefetch'/>
</cpu>
+ <cpu type='tcg' name='486-v1' usable='yes'/>
<cpu type='tcg' name='486' usable='yes'/>
<machine name='pc-i440fx-4.1' alias='pc' hotplugCpus='yes' maxCpus='255' default='yes'/>
<machine name='pc-0.15' hotplugCpus='yes' maxCpus='255'/>
--
2.21.0
2
1
[libvirt] [PATCH 0/9] qemu: Refactor transaction actions handling and refactor checkpoint deletion
by Peter Krempa 27 Sep '19
by Peter Krempa 27 Sep '19
27 Sep '19
This should be applied on top of the checkpoints split. Pushing it
requires the interlocking patches for checkpoints being merged as the
bitmap removal QMP command is transactionable only since qemu 4.2. That
is also the reason for the addition of the capabilities of qemu 4.2.
Peter Krempa (9):
DO NOT PUSH: tests: add qemu capabilities data for qemu 4.2
qemu: monitor: Add transaction generators for dirty bitmap APIs
qemu: monitor: Add transaction generators for snapshot APIs
tests: qemumonitor: Add testing for the 'transaction' command and
generators
qemu: block: Replace snapshot transaction action generator
qemu: checkpoint: Replace open-coded transaction action generators
qemu: monitor: unexport qemuMonitorJSONTransactionAdd
qemu: checkpoint: Fix rollback and access to unlocked 'vm' when
deleting checkpoints
qemu: monitor: Remove non-transaction based dirty bitmap APIs
src/qemu/qemu_block.c | 21 +-
src/qemu/qemu_checkpoint.c | 61 +-
src/qemu/qemu_monitor.c | 100 +-
src/qemu/qemu_monitor.h | 54 +-
src/qemu/qemu_monitor_json.c | 189 +-
src/qemu/qemu_monitor_json.h | 52 +-
.../caps_4.2.0.x86_64.replies | 24758 ++++++++++++++++
.../caps_4.2.0.x86_64.xml | 1952 ++
tests/qemumonitorjsontest.c | 80 +-
9 files changed, 26994 insertions(+), 273 deletions(-)
create mode 100644 tests/qemucapabilitiesdata/caps_4.2.0.x86_64.replies
create mode 100644 tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml
--
2.21.0
3
17
[libvirt] [PATCH] conf: utility function to update entry in def->nets array
by Laine Stump 26 Sep '19
by Laine Stump 26 Sep '19
26 Sep '19
A virDomainNetDef object in a domain's nets array might contain a
virDomainHostdevDef, and when this is the case, the domain's hostdevs
array will also have a pointer to this embedded hostdev (this is done
so that internal functions that need to perform some operation on all
hostdevs won't leave out the type='hostdev' network interfaces).
When a network device was updated with virDomainUpdateDeviceFlags(),
we were replacing the entry in the nets array (and free'ing the
original) but forgetting about the pointer in the hostdevs array
(which would then point to the now-free'd hostdev contained in the old
net object.) This often resulted in a libvirtd crash.
The solution is to add a function, virDomainNetUpdate(), called by
qemuDomainUpdateDeviceConfig(), that updates the hostdevs array
appropriately along with the nets array.
Resolves: https://bugzilla.redhat.com/1558934
Signed-off-by: Laine Stump <laine(a)redhat.com>
---
(I actually think that it was a bad idea to have this "reach over"
pointer in the hostdevs array (I can say that, since it was my idea
:-), and want to eliminate it in favor of using an iterator function
for all operations that need to do something to all hostdevs, but this
bug exists on old, maintained branches, and I wouldn't want to require
backporting anything that disruptive to a stable branch.)
Also, I was unable to reproduce the crashes described in the bug
report using current upstream code, but could witness (by adding a
breakpoint in gdb) the stale pointer when running without this patch,
and the correct pointer when running with the patch)
src/conf/domain_conf.c | 41 ++++++++++++++++++++++++++++++++++++++++
src/conf/domain_conf.h | 1 +
src/libvirt_private.syms | 1 +
src/qemu/qemu_driver.c | 6 ++++--
4 files changed, 47 insertions(+), 2 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index d638c455d0..2875598eb0 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -17109,6 +17109,47 @@ virDomainNetRemove(virDomainDefPtr def, size_t i)
return net;
}
+
+int
+virDomainNetUpdate(virDomainDefPtr def,
+ size_t netidx,
+ virDomainNetDefPtr newnet)
+{
+ size_t hostdevidx;
+ virDomainNetDefPtr oldnet = def->nets[netidx];
+ virDomainHostdevDefPtr oldhostdev = virDomainNetGetActualHostdev(oldnet);
+ virDomainHostdevDefPtr newhostdev = virDomainNetGetActualHostdev(newnet);
+
+ /*
+ * if newnet or oldnet has a valid hostdev*, we need to update the
+ * hostdevs list
+ */
+ if (oldhostdev) {
+ for (hostdevidx = 0; hostdevidx < def->nhostdevs; hostdevidx++) {
+ if (def->hostdevs[hostdevidx] == oldhostdev)
+ break;
+ }
+ }
+
+ if (oldhostdev && hostdevidx < def->nhostdevs) {
+ if (newhostdev) {
+ /* update existing entry in def->hostdevs */
+ def->hostdevs[hostdevidx] = newhostdev;
+ } else {
+ /* delete oldhostdev from def->hostdevs */
+ virDomainHostdevRemove(def, hostdevidx);
+ }
+ } else if (newhostdev) {
+ /* add newhostdev to end of def->hostdevs */
+ if (VIR_APPEND_ELEMENT(def->hostdevs, def->nhostdevs, newhostdev) < 0)
+ return -1;
+ }
+
+ def->nets[netidx] = newnet;
+ return 0;
+}
+
+
int virDomainControllerInsert(virDomainDefPtr def,
virDomainControllerDefPtr controller)
{
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 57ce5b95dc..c91e8841ee 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -3157,6 +3157,7 @@ virDomainNetDefPtr virDomainNetFind(virDomainDefPtr def, const char *device);
virDomainNetDefPtr virDomainNetFindByName(virDomainDefPtr def, const char *ifname);
bool virDomainHasNet(virDomainDefPtr def, virDomainNetDefPtr net);
int virDomainNetInsert(virDomainDefPtr def, virDomainNetDefPtr net);
+int virDomainNetUpdate(virDomainDefPtr def, size_t netidx, virDomainNetDefPtr newnet);
virDomainNetDefPtr virDomainNetRemove(virDomainDefPtr def, size_t i);
void virDomainNetRemoveHostdev(virDomainDefPtr def, virDomainNetDefPtr net);
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 39812227aa..d1534871a9 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -508,6 +508,7 @@ virDomainNetSetModelString;
virDomainNetTypeFromString;
virDomainNetTypeSharesHostView;
virDomainNetTypeToString;
+virDomainNetUpdate;
virDomainNostateReasonTypeFromString;
virDomainNostateReasonTypeToString;
virDomainObjAssignDef;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 0753904472..5f63c4f51e 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -8786,8 +8786,10 @@ qemuDomainUpdateDeviceConfig(virDomainDefPtr vmdef,
false) < 0)
return -1;
- virDomainNetDefFree(vmdef->nets[pos]);
- vmdef->nets[pos] = net;
+ if (virDomainNetUpdate(vmdef, pos, net))
+ return -1;
+
+ virDomainNetDefFree(oldDev.data.net);
dev->data.net = NULL;
break;
--
2.21.0
2
3
[libvirt] [PATCH 0/2] conf: refresh network ports missing from network driver
by Laine Stump 26 Sep '19
by Laine Stump 26 Sep '19
26 Sep '19
Patch 2/2 is the actual fix. 1/2 is just to make the fix simpler.
NB: these two patches should also be included with the other patches for
https://bugzilla.redhat.com/1745815
Laine Stump (2):
conf: take advantage of VIR_AUTO* in virDomainNetCreatePort()
conf: refresh network ports missing from network driver on restart
src/conf/domain_conf.c | 82 +++++++++++++++++++-----------------
src/conf/virnetworkportdef.h | 1 +
2 files changed, 44 insertions(+), 39 deletions(-)
--
2.21.0
2
7
[libvirt] [PATCH] domain_conf: Unref video private data in virDomainVideoDefClear()
by Michal Privoznik 26 Sep '19
by Michal Privoznik 26 Sep '19
26 Sep '19
The private data for video definition is created in
virDomainVideoDefNew() and we attempt to free it in
virDomainVideoDefFree(). This seems to work, except
the free function calls clear function which zeroes
out the whole structure and thus virObjectUnref()
which is called on private data does nothing.
2,568 bytes in 107 blocks are definitely lost in loss record 207 of 213
at 0x4A35476: calloc (vg_replace_malloc.c:752)
by 0x50A6048: virAllocVar (viralloc.c:346)
by 0x513CC5A: virObjectNew (virobject.c:243)
by 0x4DC1DEE: qemuDomainVideoPrivateNew (qemu_domain.c:1337)
by 0x51A6BD6: virDomainVideoDefNew (domain_conf.c:2831)
by 0x51B9F06: virDomainVideoDefParseXML (domain_conf.c:15541)
by 0x51CB761: virDomainDefParseXML (domain_conf.c:21158)
by 0x51C5973: virDomainDefParseNode (domain_conf.c:21708)
by 0x51C583A: virDomainDefParse (domain_conf.c:21663)
by 0x51C58AE: virDomainDefParseFile (domain_conf.c:21688)
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/conf/domain_conf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 67555c9be3..c290baf953 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -2853,6 +2853,7 @@ virDomainVideoDefClear(virDomainVideoDefPtr def)
if (def->driver)
VIR_FREE(def->driver->vhost_user_binary);
VIR_FREE(def->driver);
+ virObjectUnref(def->privateData);
memset(def, 0, sizeof(*def));
}
@@ -2864,7 +2865,6 @@ void virDomainVideoDefFree(virDomainVideoDefPtr def)
return;
virDomainVideoDefClear(def);
- virObjectUnref(def->privateData);
VIR_FREE(def);
}
--
2.21.0
2
3
26 Sep '19
https://bugzilla.redhat.com/show_bug.cgi?id=1753670
Signed-off-by: Fabiano FidĂŞncio <fidencio(a)redhat.com>
---
libvirt-gconfig/libvirt-gconfig-domain-video.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-video.h b/libvirt-gconfig/libvirt-gconfig-domain-video.h
index 973ba72..8431f6b 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-video.h
+++ b/libvirt-gconfig/libvirt-gconfig-domain-video.h
@@ -63,7 +63,8 @@ typedef enum {
GVIR_CONFIG_DOMAIN_VIDEO_MODEL_XEN,
GVIR_CONFIG_DOMAIN_VIDEO_MODEL_VBOX,
GVIR_CONFIG_DOMAIN_VIDEO_MODEL_QXL,
- GVIR_CONFIG_DOMAIN_VIDEO_MODEL_VIRTIO
+ GVIR_CONFIG_DOMAIN_VIDEO_MODEL_VIRTIO,
+ GVIR_CONFIG_DOMAIN_VIDEO_MODEL_BOCHS,
} GVirConfigDomainVideoModel;
GType gvir_config_domain_video_get_type(void);
--
2.23.0
2
1
[libvirt] [PATCH 1/1] conf: handle empty string in interface target name
by Nikolay Shirokovskiy 26 Sep '19
by Nikolay Shirokovskiy 26 Sep '19
26 Sep '19
Empty name is not allowed by schema but qemu is able to start with such
a config (and I guess some other hypervisors too). As a result name will
be generated by kernel and have form 'tap<N>'. At the same time if
target element is ommited in config the name will be generated by
libvirt and have form 'vnet<N>'. Let's have only the latter pattern
for autogenerated names by treating empty name as ommited.
Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy(a)virtuozzo.com>
---
There is a RFS for the issue - https://www.redhat.com/archives/libvir-list/2019-September/msg00645.html
src/conf/domain_conf.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 76aaa63f57..7ff3972cbb 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -11592,6 +11592,8 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
} else if (!ifname &&
virXMLNodeNameEqual(cur, "target")) {
ifname = virXMLPropString(cur, "dev");
+ if (ifname[0] == '\0')
+ VIR_FREE(ifname);
managed_tap = virXMLPropString(cur, "managed");
} else if ((!ifname_guest || !ifname_guest_actual) &&
virXMLNodeNameEqual(cur, "guest")) {
--
2.23.0
3
5
[libvirt] [PATCH v3 00/11] remove repetition of URI path validation
by Daniel Henrique Barboza 26 Sep '19
by Daniel Henrique Barboza 26 Sep '19
26 Sep '19
This is a code repetition that I crossed a few times, then
I noticed that Cole Robinson suggested a solution for it
in the wiki. Here it is.
changes from v2:
- use a boolean to determine 'QEMU' and 'vbox' case to avoid block
repetition (patch 8)
- avoid 80+ chars lines in all patches
changes from v1:
- handle QEMU and vbox cases separately inside the validation
function
v2: https://www.redhat.com/archives/libvir-list/2019-September/msg01007.html
v1: https://www.redhat.com/archives/libvir-list/2019-September/msg00983.html
Daniel Henrique Barboza (11):
src/driver.c: add virConnectValidateURIPath()
interface_backend_netcf.c: use virConnectValidateURIPath()
interface_backend_udev.c: use virConnectValidateURIPath()
bridge_driver.c: virConnectValidateURIPath()
node_device_driver.c: use virConnectValidateURIPath()
secret_driver.c: use virConnectValidateURIPath()
storage_driver.c: use virConnectValidateURIPath()
driver.c: change URI validation to handle QEMU and vbox case
qemu_driver.c: use virConnectValidateURIPath()
vbox_common.c: use virConnectValidateURIPath()
vbox_driver.c: use virConnectValidateURIPath()
src/driver.c | 38 +++++++++++++++++++++++++
src/driver.h | 4 +++
src/interface/interface_backend_netcf.c | 19 +++----------
src/interface/interface_backend_udev.c | 19 +++----------
src/libvirt_private.syms | 1 +
src/network/bridge_driver.c | 19 +++----------
src/node_device/node_device_driver.c | 19 +++----------
src/qemu/qemu_driver.c | 20 +++----------
src/secret/secret_driver.c | 19 +++----------
src/storage/storage_driver.c | 19 +++----------
src/vbox/vbox_common.c | 16 ++---------
src/vbox/vbox_driver.c | 16 ++---------
12 files changed, 75 insertions(+), 134 deletions(-)
--
2.21.0
2
13
[libvirt] [libvirt-rust PATCH 0/1] Fix unsoundness in wrapper new constructor
by Linus Färnstrand 25 Sep '19
by Linus Färnstrand 25 Sep '19
25 Sep '19
There are safety issues with all wrapper type constructors.
All safe wrappers can be created without `unsafe` from raw pointers.
Meaning any subsequent use will cause undefined behavior if the pointer
does not point to a valid object:
```rust
// This will segfault / Cause undefined behavior
virt::connect::Connect::new(ptr::null_mut()).get_hostname()
```
These methods to create safe wrappers from raw pointers must be `unsafe`.
And optimally is if all unsafe methods have a `# Safety` section
explaining what conditions must hold to call them.
Since these methods should not be the main way of instantiating these types,
they should likely not be called `new`, but rather something like `from_ptr`.
Let's see if I manage to make the patch appear under the same email thread this time.
Linus Färnstrand (1):
Make creating safe wrapper from raw pointer unsafe
src/connect.rs | 10 ++++++++--
src/domain.rs | 10 ++++++++--
src/domain_snapshot.rs | 10 ++++++++--
src/interface.rs | 10 ++++++++--
src/network.rs | 10 ++++++++--
src/nodedev.rs | 10 ++++++++--
src/nwfilter.rs | 10 ++++++++--
src/secret.rs | 10 ++++++++--
src/storage_pool.rs | 10 ++++++++--
src/storage_vol.rs | 10 ++++++++--
src/stream.rs | 8 +++++++-
11 files changed, 87 insertions(+), 21 deletions(-)
--
2.21.0
1
0
Hi, downstream here at Red Hat I've been fielding some questions about
the usability and feature readiness of Bitmaps (and related features) in
QEMU.
Here are some questions I answered internally that I am copying to the
list for two reasons:
(1) To make sure my answers are actually correct, and
(2) To share this pseudo-reference with the community at large.
This is long, and mostly for reference. There's a summary at the bottom
with some todo items and observations about the usability of the feature
as it exists in QEMU.
Before too long, I intend to send a more summarized "roadmap" mail which
details all of the current and remaining work to be done in and around
the bitmaps feature in QEMU.
Questions:
> "What format(s) is/are required for this functionality?"
>From the QEMU API, any format can be used to create and author
incremental backups. The only known format limitations are:
1. Persistent bitmaps cannot be created on any format except qcow2,
although there are hooks to add support to other formats at a later date
if desired.
DANGER CAVEAT #1: Adding bitmaps to QEMU by default creates transient
bitmaps instead of persistent ones.
Possible TODO: Allow users to 'upgrade' transient bitmaps to persistent
ones in case they made a mistake.
2. When using push backups (blockdev-backup, drive-backup), you may use
any format as a target format.
DANGER CAVEAT #2: without backing file and/or filesystem-less sparse
support, these images will be unusable.
EXAMPLE: Backing up to a raw file loses allocation information, so we
can no longer distinguish between zeroes and unallocated regions. The
cluster size is also lost. This file will not be usable without
additional metadata recorded elsewhere.*
(* This is complicated, but it is in theory possible to do a push backup
to e.g. an NBD target with custom server code that saves allocation
information to a metadata file, which would allow you to reconstruct
backups. For instance, recording in a .json file which extents were
written out would allow you to -- with a custom binary -- write this
information on top of a base file to reconstruct a backup.)
3. Any format can be used for either shared storage or live storage
migrations. There are TWO distinct mechanisms for migrating bitmaps:
A) The bitmap is flushed to storage and re-opened on the destination.
This is only supported for qcow2 and shared-storage migrations.
B) The bitmap is live-migrated to the destination. This is supported for
any format and can be used for either shared storage or live storage
migrations.
DANGER CAVEAT #3: The second bitmap migration technique there is an
optional migration capability that must be enabled explicitly.
Otherwise, some migration combinations may drop bitmaps.
Matrix:
> migrate = migrate_capability or (persistent and shared_storage)
Enumerated:
live storage + raw : transient + no-capability: Dropped
live-storage + raw : transient + bm-capability: Migrated
live-storage + qcow2 : transient + no-capability: Dropped
live-storage + qcow2 : transient + bm-capability: Migrated
live-storage + qcow2 : persistent + no-capability: Dropped (!)
live-storage + qcow2 : persistent + bm-capability: Migrated
shared-storage + raw : transient - no-capability: Dropped
shared-storage + raw : transient + bm-capability: Migrated
shared-storage + qcow2 : transient + no-capability: Migrated
shared-storage + qcow2 : transient + bm-capability: Migrated
shared-storage + qcow2 : persistent + no-capability: Migrated
shared-storage + qcow2 : persistent + bm-capability: Migrated
Enabling the bitmap migration capability will ALWAYS migrate the bitmap.
If it's disabled, we will only migrate the bitmaps for shared storage
migrations where the bitmap is persistent, which is a qcow2-only case.
There is no warning or error if you attempt to migrate in a manner that
loses your bitmaps.
(I might be persuaded to add a case for when you are doing a live
storage migration of qcow2 with persistent bitmaps, which is somewhat a
conflicting case: you've asked for the bitmap to be persistent, but it
seems likely that if this ever happens in practice, it's because you
have neglected to ask for it to be migrated to the new host.)
See iotest 169 for more details on this.
At present, these are the only format limitations I am consciously aware
of. From a management API/GUI perspective, it makes sense to restrict
the feature set to "qcow2 only" to minimize edge cases.
> "Is libvirt aware of these 'gotcha' cases?"
>From talks I've had with Eric Blake and Peter Krempa, they certainly are
now.
> "Is it possible to make persistent the default?"
Not quickly.
In QEMU, not without a deprecation period or some other incompatibility.
Default values are not (yet?) introspectable via the schema. We need
(possibly) up to two QAPI extensions:
I) The ability to return deprecation warnings when issuing a command
that will cease to work in the future.
This has been being discussed somewhat on-list recently. It seems like
there is not a big appetite for tackling something perceived as
low-value because it is likely to be ignored.
II) The ability to document default values in the QAPI schema for the
purposes of introspection.
With one or both of these extensions, we could remove the default value
for persistence and promote it to a required argument with a
transitionary period where it will work with a warning. Then, in the
future, users will be forced to specify if they want persistent=true or
persistent=false.
This is not on my personal roadmap to implement.
> "Is it possible to make bitmap migration the default?"
I don't know at present. Migration capabilities are either "on" or "off"
and the existing negotiation mechanisms for capabilities are extremely
rudimentary.
Changing this might require fiddling with machine compat properties,
adding features to the migration protocol, or more. I don't know what I
don't know, so I will estimate this change as likely invasive.
I've discussed this with David Gilbert and it seems like a complicated
project for the benefit of this sub-project alone, so this isn't on my
personal roadmap to resolve.
The general consensus appears to be that protecting the user is
libvirt's job.
> "Where do we stand with external snapshot support?"
Still broken. In the aftermath of 4.1, it's the most obvious outstanding
broken feature. Vladimir has patches to fix it, but they need some
attention.
> "What needs to happen to bitmaps when doing stream or commit?"
Uncertain in QEMU; creating an external snapshot implicitly ends the
timeslice represented by the old bitmap, but an explicit checkpoint is
better.
I think some little ascii charts will help people understand what we're
talking about here, so let's cover some examples.
SCENARIO 1)
Here's a timeline for a single node (one image, no backing files), with
some points in time highlighted:
Time T = 0.........................n
+rec: [--X------Y------Z--------]
-rec: [---------x------y--------]
region: [aabbbbbbbcccccccddddddddd]
X, Y, and Z are points in time where bitmaps 'x', 'y', and 'z' were
created and began recording. x and y are points in time where bitmaps
'x' and 'y' stopped recording.
This creates a few distinct regions / timeslices.
a: Data written before we began tracking writes.
b: Data written to bitmap 'x'
c: Data written to bitmap 'y'
d: data written to bitmap 'z'
region 'a' is of an unknown size and indeterminate length, because there
is no reference point (checkpoint) prior to it.
regions 'b' and 'c' are of finite size and determinate length, because
they have fixed reference points on either sides of their timeslice.
region 'd' is also of an unknown size and indeterminate length, because
it is actively recording and has no checkpoint to its right. It may be
fixed at any time by disabling bitmap 'z'.
In QEMU, generally what we want to do is to do several things at one
atomic moment to keep these regions adjacent, contiguous, and disjoint.
So from a high-level (using a fictional simplified syntax), we do:
Transaction(
create('y'),
disable('x'),
backup('x')
)
which together performs a backup+checkpoint.
We can do a backup without a checkpoint:
4.1:
Transaction(
create('tmp')
merge('tmp', 'x')
backup('tmp')
)
4.2:
> backup('x', bitmap_sync=never)
Or a checkpoint without a backup:
Transaction(
create('y'),
disable('x')
)
SCENARIO 2)
Now, what happens when we make an external snapshot and do nothing at
all to our bitmaps?
Time T = 0.......................................n
+rec: [--X------Y------Z--------] <-- [-------]
-rec: [---------x------y--------] <-- [-------]
region: [aabbbbbbbcccccccddddddddd] <-- [eeeeeee]
{ base } <-- { top }
We've created a new implicit timeslice, "e" without creating a new
bitmap. Because the bitmap 'z' was still active at the time of the
snapshot, it now has a temporarily-determinate endpoint to its region.
This is kind of like an "implied checkpoint", but it's a very poor one
because it's not really addressable.
DANGER CAVEAT #4: We have no way to create incremental backups anymore,
because the current moment in time has no addressable point.
That's not great; but it is likely a fixable scenario when commit is
fixed: committing the top layer back down into the base layer will add
all new writes to the end of the old region; restoring our backup chain:
Time T = 0.........................C.......n
+rec: [--X------Y------Z-------- -------]
-rec: [---------x------y-------- -------]
region: [aabbbbbbbcccccccddddddddd ddddddd]
Here, region 'e' just gets appended to region d, and we can make
incremental backups from any checkpoint X, Y, Z to the current moment again.
SCENARIO 3)
What happens if we make a firm checkpoint at the same time we make the
snapshot?
Transaction(
disable('z'),
snapshot('top'),
create('w')
)
Time T = 0......................... ......n
+rec: [--X------Y------Z-------- ] <-- [W------]
-rec: [---------x------y--------z] <-- [-------]
region: [aabbbbbbbcccccccddddddddd ] <-- [eeeeeee]
{ base } <-- { top }
Now instead of the new region 'e' being implied, it's explicit. We can
make backups between any point and the current moment *across* the gap.
It was my thought that this was the most preferable method that libvirt
should use, but there is some doubt from Peter Krempa. We'll see how it
shakes out.
There are questions about what QEMU should do by default, without
libvirt's help. At the moment, it's "nothing" but there have been
questions about "something".
Keeping in mind that we likely can't change our existing behavior
without some kind of flag, there are still some API/usability questions:
> If we create an external snapshot on top of an image with actively
> recording bitmaps, should we disable them?
We can leave them enabled, but they'll never see any writes. Or we can
explicitly disable them. Explicitly disabling them may make more sense
to prevent modifying bitmaps accidentally on commit.
My guess: No. we should leave them alone; allow checkpoint creation
mechanisms to do the disable+create dance for bitmaps as needed.
Potential problems: The backing image is read-only, and if we change our
mind later, we will need to find a way to re-open the backing image as
read-write for the purposes of toggling the recording bit prior to any
legitimate guest usage of that node. Then, re-open as RO again.
> Should we fork bitmaps (on snapshot)?
If a bitmap named 'z' is recording when we create an external snapshot,
should that bitmap be *copied* into the top layer?
My guess: No.
This would allow us to create external snapshots *without* creating a
checkpoint, but conceptually that's a nightmare: It would allow for
mutually independent creation of snapshots OR checkpoints. This would be
hard to corral when undoing a snapshot, for instance.
In my opinion, snapshots MUST be checkpoints, and therefore allowing a
snapshot without creating a checkpoint is a no-go.
> (Should we fork bitmaps) if we're not using checkpoints?
If we are using a checkpoint-less paradigm (i.e. the rolling incremental
backup using only one bitmap) we might want to copy the bitmap up to
make the next incremental backup as if nothing ever happened.
However, rolling incremental backups doesn't need any kind of auto-copy
feature. This is possible today:
> create('base', 'A')
> transact(snapshot('top'), create('top', 'B'))
> merge('B', [('base', 'A'), ('top', 'B')])
i.e., we create a new bitmap on the top layer, then merge in the old
data from the backing file, which remains addressable.
Whether the user wants to copy up or not, there are commands that will
do that already.
> Should we create new bitmaps by default when we can?
If a backing image has bitmaps, should QEMU automatically create a new
bitmap for the top layer? Should it be named something new, something
user-provided, or based on existing active bitmaps?
If a user creates a new external snapshot with no consideration paid to
bitmaps (like "SCENARIO 2" above), they temporarily lose the ability to
do incremental backups. They might be able to commit the image back to
"try again."
That's not great. Here are some options for resolving this:
- Automatic names: Might cause collisions out-of-band with management
tooling by accident, tooling has to query to discover what bitmaps were
automatically created.
- Same names: Can create namespace confusion when committing snapshots
later; although each layer of a backing chain can have bitmaps named the
same thing, it causes future problems when committing together that can
be hard to resolve.
- User-provided name: This is workable, and requires an amendment to the
snapshot command to automatically create a new bitmap on the snapshot.
My guess: No, we can't automatically create a new bitmap for the user.
We can amend the snapshot commands to accept bitmap names, but at that
point we've just duplicated transactions:
Transact(
snapshot('top'),
create('top', 'new-bitmap')
)
All that said (Mostly a lot "No, let's not do anything"), maybe there's
room for an "assistive" mode for users, a bitmap-aware snapshot creation
command. It could do the following well-defined magic:
bitmap-snapshot(base, top, bitmap_name):
1. disable any active bitmaps in the base node.
2. create a bitmap named "bitmap_name" in the top node, failing if
a bitmap by that name already exists on either node.
What this accomplishes:
- Disables any bitmaps in the base layer ahead of time, in preparation
for an eventual commit operation.
- Always creates a new, enabled bitmap on the snapshot mode which is
guaranteed not to conflict with a name on the base node. This bitmap can
be used to create additional copies post-hoc, if desired.
- Formalizes our "best practice" suggestion for mixing bitmaps and
snapshots into a single, documented command.
Is this strictly needed? No, if you have the foresight, you can do this
instead:
Transact(
disable('a'),
disable('b'),
disable('c'),
# plus however many more ...
snapshot('top', ...),
create('top', 'd')
)
but a convenience command might still have a role to play in helping
take the guesswork out for non-libvirt users.
That's the bulk of what was discussed.
Summary:
GOTCHAs:
#1: Bitmaps are created non-persistent by default, and can't be changed.
#2: Push backup destination formats will happily back up to a format
that isn't semantically useful.
#3: Migrating non-shared block storage can drop even persistent bitmaps
if you don't pass the bitmap migration capability flag to both QEMU
instances.
#4: Creating a snapshot without doing some bitmap manipulation
beforehand can temporarily render your bitmaps unusable. Failing to
disable bitmaps before creating a snapshot might make commits very
tricky later on.
Gotchas 1 and 4 can be at least partially alleviated. gotcha 2 remains a
pain point we cannot intercept at the QEMU layer. gotcha 3 has potential
remedies, but they are complicated.
QEMU todo items:
- Fix bitmap data corruption on commit (Ongoing, by Vladimir@Virtuozzo)
- add a set_persistence method for bitmaps that allows us to change the
storage class of a bitmap after creation. (Helps alleviate gotcha #1.)
- Add a command that allows us to merge allocation data into a bitmap.
This helps alleviate gotcha #4: If we create a new image but neglected
to do the proper transaction dance, we can simply copy the allocation
data into a new bitmap. (Note, we'd still need set_persistence to help
us disable the old bitmap before any commit happens.)
- Add convenience command for easy + safe combination of bitmaps +
snapshots. Helps prevent #4.
Research items:
- How hard is it to reopen a backing image as RW while it's in-use,
disable a bitmap, and then reopen as RO? This is to partially address
gotcha #4; if we forget to disable bitmaps before creating the snapshot.
- How hard is the reverse operation? Can we reopen a backing image RW,
enable a bitmap, and then reopen as RO? This gives us better control
over what happens on commit.
- After we fix the commit bug, what does/should commit actually do with
bitmaps? What about bitmaps that collide? The current behavior is that
any bitmaps don't transfer from top to base. Any bitmaps active in the
base record all the new writes from the top.
That's all!
--js
3
7
[libvirt] [jenkins-ci PATCH] jenkins: Don't try to build libosinfo on Debian sid
by Andrea Bolognani 25 Sep '19
by Andrea Bolognani 25 Sep '19
25 Sep '19
We support the platform as a target for lcitool-driven builds, but
we don't have a corresponding worker in the CentOS CI environment.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
Pushed as a fix to the CI environment.
jenkins/projects/libosinfo.yaml | 1 -
1 file changed, 1 deletion(-)
diff --git a/jenkins/projects/libosinfo.yaml b/jenkins/projects/libosinfo.yaml
index c744b38..b38524e 100644
--- a/jenkins/projects/libosinfo.yaml
+++ b/jenkins/projects/libosinfo.yaml
@@ -5,7 +5,6 @@
# CentOS 7, Debian 9, Ubuntu 18;
machines:
- libvirt-debian-10
- - libvirt-debian-sid
- libvirt-fedora-29
- libvirt-fedora-30
- libvirt-fedora-rawhide
--
2.21.0
1
0
[libvirt] [PATCH] domain_conf: Fix str2enum translation of video driver name
by Michal Privoznik 25 Sep '19
by Michal Privoznik 25 Sep '19
25 Sep '19
In bc1e924cf0d we've introduced video driver name and whilst
doing so we've utilized VIR_ENUM_IMPL() macro. Then, in domain
XML parsing code the generated
virDomainVideoBackendTypeFromString() is called and its return
value is assigned directly to an unsigned int variable which is
wrong. Also, the video driver enum has 'default' value which is
not formatted into domain XML but is accepted during parsing.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
Pushed under trivial & build breaker rules.
src/conf/domain_conf.c | 4 +++-
src/conf/domain_conf.h | 2 +-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 6dea670257..67555c9be3 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -15504,11 +15504,13 @@ virDomainVideoDefParseXML(virDomainXMLOptionPtr xmlopt,
}
if (driver_name) {
- if ((def->backend = virDomainVideoBackendTypeFromString(driver_name)) < 0) {
+ int backend;
+ if ((backend = virDomainVideoBackendTypeFromString(driver_name)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown video driver '%s'"), driver_name);
goto error;
}
+ def->backend = backend;
} else {
def->backend = VIR_DOMAIN_VIDEO_BACKEND_TYPE_DEFAULT;
}
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index cff33f6682..53bdee22fb 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1378,7 +1378,7 @@ struct _virDomainWatchdogDef {
/* the backend driver used for virtio interfaces */
typedef enum {
- VIR_DOMAIN_VIDEO_BACKEND_TYPE_DEFAULT,
+ VIR_DOMAIN_VIDEO_BACKEND_TYPE_DEFAULT = 0,
VIR_DOMAIN_VIDEO_BACKEND_TYPE_QEMU,
VIR_DOMAIN_VIDEO_BACKEND_TYPE_VHOSTUSER,
--
2.21.0
1
0
[libvirt] [PATCH] qemu_blockjob: Remove secdriver metadata for whole backing chain on job completion
by Michal Privoznik 25 Sep '19
by Michal Privoznik 25 Sep '19
25 Sep '19
Turns out, block mirror is not the only job a disk can have. It
can also do commits of one layer into the other. Or possibly some
other tricks too. Problem is that while we set seclabels on given
layers of backing chain when the job is starting (via
qemuDomainStorageSourceAccessAllow()) we don't restore them when
job finishes. This leaves XATTRs set and corresponding images
unusable.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
Not sure if we want to remove XATTRs for the top layer too or just the
rest of the backing chain (n=disk->src vs. n=disk->src->backingStore).
Peter?
src/qemu/qemu_blockjob.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c
index a991309ee7..6408f95e4e 100644
--- a/src/qemu/qemu_blockjob.c
+++ b/src/qemu/qemu_blockjob.c
@@ -658,9 +658,9 @@ qemuBlockJobEventProcessLegacyCompleted(virQEMUDriverPtr driver,
virObjectUnref(disk->src);
disk->src = disk->mirror;
} else {
+ virStorageSourcePtr n;
+
if (disk->mirror) {
- virStorageSourcePtr n;
-
virDomainLockImageDetach(driver->lockManager, vm, disk->mirror);
/* Ideally, we would restore seclabels on the backing chain here
@@ -678,6 +678,16 @@ qemuBlockJobEventProcessLegacyCompleted(virQEMUDriverPtr driver,
virObjectUnref(disk->mirror);
}
+
+ for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) {
+ if (qemuSecurityMoveImageMetadata(driver, vm, n, NULL) < 0) {
+ VIR_WARN("Unable to remove disk metadata on "
+ "vm %s from %s (disk target %s)",
+ vm->def->name,
+ NULLSTR(n->path),
+ disk->dst);
+ }
+ }
}
/* Recompute the cached backing chain to match our
--
2.21.0
2
2
nodinfotest.c doesn't exist anymore
seclabeltest.c has changed substantially since this behavior was
added to the spec, and in my testing doesn't have any problems
running in mock
Signed-off-by: Cole Robinson <crobinso(a)redhat.com>
---
libvirt.spec.in | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index e2f2a40238..2e1d575663 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -1313,15 +1313,6 @@ mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes.stp \
%endif
%check
-cd tests
-# These tests don't current work in a mock build root
-for i in nodeinfotest seclabeltest
-do
- rm -f $i
- printf 'int main(void) { return 0; }' > $i.c
- printf '#!/bin/sh\nexit 0\n' > $i
- chmod +x $i
-done
if ! make %{?_smp_mflags} check VIR_TEST_DEBUG=1
then
cat test-suite.log || true
--
2.23.0
2
1
[libvirt] [PATCH v2 00/11] remove repetition of URI path validation
by Daniel Henrique Barboza 24 Sep '19
by Daniel Henrique Barboza 24 Sep '19
24 Sep '19
This is a code repetition that I crossed a few times, then
I noticed that Cole Robinson suggested a solution for it
in the wiki. Here it is.
changes from v1:
- handle QEMU and vbox cases separately inside the validation
function
v1: https://www.redhat.com/archives/libvir-list/2019-September/msg00983.html
Daniel Henrique Barboza (11):
src/driver.c: add virConnectValidateURIPath()
interface_backend_netcf.c: use virConnectValidateURIPath()
interface_backend_udev.c: use virConnectValidateURIPath()
bridge_driver.c: virConnectValidateURIPath()
node_device_driver.c: use virConnectValidateURIPath()
secret_driver.c: use virConnectValidateURIPath()
storage_driver.c: use virConnectValidateURIPath()
driver.c: change URI validation to handle QEMU and vbox case
qemu_driver.c: use virConnectValidateURIPath()
vbox_common.c: use virConnectValidateURIPath()
vbox_driver.c: use virConnectValidateURIPath()
src/driver.c | 40 +++++++++++++++++++++++++
src/driver.h | 4 +++
src/interface/interface_backend_netcf.c | 17 ++---------
src/interface/interface_backend_udev.c | 17 ++---------
src/libvirt_private.syms | 1 +
src/network/bridge_driver.c | 19 +++---------
src/node_device/node_device_driver.c | 17 ++---------
src/qemu/qemu_driver.c | 20 +++----------
src/secret/secret_driver.c | 17 ++---------
src/storage/storage_driver.c | 17 ++---------
src/vbox/vbox_common.c | 16 ++--------
src/vbox/vbox_driver.c | 16 ++--------
12 files changed, 67 insertions(+), 134 deletions(-)
--
2.21.0
2
12
From: Marc-André Lureau <marcandre.lureau(a)redhat.com>
This series adds support for running virtio GPUs in seperate
processes, thanks to vhost-user backend.
The QEMU support landed for 4.1. There are several benefits of running
the GPU/virgl in an external process, since Mesa is rather heavy on
the qemu main loop, and may block for a while, or crash.
The external GPU process is started with one end of a socket pair, the
other end is given to a QEMU chardev attached to a device. The
external process is also added to the cgroup to limit resources usage.
vhost-user is a generic mechanism that allows implementing virtio device
dataplane handling in a separate userspace process. vhost-user-gpu here
notably moves the virgl 3d handling out of the main qemu process. The
external process will be /usr/libexec/vhost-user-gpu, which comes from
qemu.git contrib/vhost-user-gpu code, first released in qemu-4.1.
Part of this series deals with discovering the location on disk of the
vhost-user-gpu binary, and what capabilities it provides. This uses a
similar mechanism to firmware.json, described in qemu
docs/interop/vhost-user.json
https://github.com/qemu/qemu/blob/master/docs/interop/vhost-user.json
qemu 4.1 ships a 50-qemu-gpu.json to match. I believe virtio-fs
will use a similar mechanism when it lands in upstream qemu, as
virtiofsd is a separate process that communicates with qemu over
vhost-user.
For a bit more background on vhost-user-gpu process handling and
the json interop motivation, here's some of the qemu discussion:
https://lists.nongnu.org/archive/html/qemu-devel/2018-08/msg02610.html
https://lists.nongnu.org/archive/html/qemu-devel/2018-09/msg00807.html
For this series, the XML to enable this is:
<video model='virtio'>
<driver name='vhostuser'/>
<acceleration accel3d='yes' rendernode='/path/to/rendernode'/>
</video>
rendernode is optional
qemu_vhost_user.c handles vhost-user.json
qemu_vhost_user_gpu.c handles the process management for
vhost-user-gpu
v5: addressing v4 reviews
- replaced "util: ignore EACCESS in virDirOpenIfExists" with more
specific "qemu-interop: ignore non-readable directories"
- use virFileSanitizePath & virBufferEscapeString on rendernode path
- fix ->accel NULL crash, replace qemuSetupVideoAccelCgroup with
qemuSetupVideoCgroup
- fix src/vz virDomainDefAddImplicitVideo usage
- few indent changes, rebased, added r-b tags
v4:
- rebased
- simplify vhost-user-gpu pidfile checking
- fix check/syntax-check
v3:
- rename qemu_configs -> qemu_interop_config
- replace <model .. vhostuser='yes'/> with <driver name='vhostuser'/>
- move vhost_user_binary to virDomainVideoDriverDef
- some VIR_AUTO usage improvements
- introduce qemuDomainVideoPrivate to store vhost-user fd
- improved selection of -device model
- use DO_TEST_CAPS_LATEST
- allocate a rendernode with virHostGetDRMRenderNode() - but no clear idea how to have a test
- add a patch to ignore EPERM in virDirOpenIfExists()
- better domain checks/validate
- added Ján r-b
- no s-o-b from Cole, per request and commits taken from his git branch
- rebase, indentation/style fixes, update doc, version..
v2:
- rebase to master
- if test file build by dropping LDADDS usage
- syntax-check issues:
* use #pragma once
* if () bracket issues
* jump label indent issues
* error message %s usage
* size_t for loops
Marc-André Lureau (20):
qemu: generalize qemuFetchConfigs
qemu-interop: ignore non-readable directories
conf: format/parse/rng/docs for video <driver name='qemu|vhostuser'/>
domain: add rendernode attribute on <accel>
qemu-cgroup: allow accel rendernode access
qemu: add vhost-user-gpu capabilities checks
qemu: check that qemu is vhost-user-vga capable
qemu: validate virtio-gpu with vhost-user
qemu: restrict 'virgl=' option to non-vhostuser video type
qemu: add vhost-user helpers
qemu: add qemuSecurityStartVhostUserGPU helper
conf: add privateData to virDomainVideoDef
qemu: add qemuDomainVideoPrivate
qemu: add vhost-user-gpu helper unit
tests: mock execv/execve
tests: wrap vhost-user paths in qemuxml2argvtest
qemu: prepare domain for vhost-user GPU
qemu: start/stop the vhost-user-gpu external device
qemu: build vhost-user GPU devices
tests: add vhost-user-gpu xml2argv tests
docs/formatdomain.html.in | 18 +-
docs/schemas/domaincommon.rng | 13 +
src/conf/domain_conf.c | 85 +++-
src/conf/domain_conf.h | 22 +-
src/qemu/Makefile.inc.am | 6 +
src/qemu/qemu_capabilities.c | 6 +
src/qemu/qemu_capabilities.h | 4 +
src/qemu/qemu_cgroup.c | 28 ++
src/qemu/qemu_command.c | 65 ++-
src/qemu/qemu_domain.c | 52 ++-
src/qemu/qemu_domain.h | 12 +
src/qemu/qemu_extdevice.c | 74 ++-
src/qemu/qemu_extdevice.h | 5 +
src/qemu/qemu_firmware.c | 144 +-----
src/qemu/qemu_interop_config.c | 189 ++++++++
src/qemu/qemu_interop_config.h | 25 ++
src/qemu/qemu_process.c | 61 ++-
src/qemu/qemu_security.c | 40 ++
src/qemu/qemu_security.h | 6 +
src/qemu/qemu_vhost_user.c | 422 ++++++++++++++++++
src/qemu/qemu_vhost_user.h | 48 ++
src/qemu/qemu_vhost_user_gpu.c | 275 ++++++++++++
src/qemu/qemu_vhost_user_gpu.h | 49 ++
src/vz/vz_sdk.c | 2 +-
tests/Makefile.am | 9 +
.../caps_4.1.0.x86_64.xml | 2 +
.../etc/qemu/vhost-user/40-gpu.json | 1 +
.../etc/qemu/vhost-user/50-gpu.json | 0
.../qemu/vhost-user/test-vhost-user-gpu | 11 +
.../usr/share/qemu/vhost-user/30-gpu.json | 1 +
.../usr/share/qemu/vhost-user/50-gpu.json | 8 +
.../usr/share/qemu/vhost-user/60-gpu.json | 1 +
tests/qemuvhostusertest.c | 132 ++++++
...host-user-gpu-secondary.x86_64-latest.args | 43 ++
.../vhost-user-gpu-secondary.xml | 46 ++
.../vhost-user-vga.x86_64-latest.args | 40 ++
tests/qemuxml2argvdata/vhost-user-vga.xml | 42 ++
tests/qemuxml2argvdata/virtio-options.args | 5 +-
tests/qemuxml2argvdata/virtio-options.xml | 4 +-
tests/qemuxml2argvtest.c | 16 +-
tests/virfilewrapper.c | 22 +
41 files changed, 1828 insertions(+), 206 deletions(-)
create mode 100644 src/qemu/qemu_interop_config.c
create mode 100644 src/qemu/qemu_interop_config.h
create mode 100644 src/qemu/qemu_vhost_user.c
create mode 100644 src/qemu/qemu_vhost_user.h
create mode 100644 src/qemu/qemu_vhost_user_gpu.c
create mode 100644 src/qemu/qemu_vhost_user_gpu.h
create mode 120000 tests/qemuvhostuserdata/etc/qemu/vhost-user/40-gpu.json
create mode 100644 tests/qemuvhostuserdata/etc/qemu/vhost-user/50-gpu.json
create mode 100755 tests/qemuvhostuserdata/usr/libexec/qemu/vhost-user/test-vhost-user-gpu
create mode 120000 tests/qemuvhostuserdata/usr/share/qemu/vhost-user/30-gpu.json
create mode 100644 tests/qemuvhostuserdata/usr/share/qemu/vhost-user/50-gpu.json
create mode 120000 tests/qemuvhostuserdata/usr/share/qemu/vhost-user/60-gpu.json
create mode 100644 tests/qemuvhostusertest.c
create mode 100644 tests/qemuxml2argvdata/vhost-user-gpu-secondary.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/vhost-user-gpu-secondary.xml
create mode 100644 tests/qemuxml2argvdata/vhost-user-vga.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/vhost-user-vga.xml
--
2.23.0
4
25
[libvirt] [PATCH 00/22] qemu: Clean up typed parameter handling in bulk stats
by Peter Krempa 24 Sep '19
by Peter Krempa 24 Sep '19
24 Sep '19
While investigating whether block bulk stats work properly with blockdev
I got irritated by macros hiding gotos.
Refactor the stats tracking by introducing few new typed parameter
handlers.
Peter Krempa (22):
util: typedparam: Split out public APIs into a separate file
util: typedparam: Purge public bits from virTypedParamsGetStringList
util: typedparam: Move and unexport virTypedParameterAssignFromStr
util: typedparam: Remove pointless cleanup label from
virTypedParameterAssignFromStr
docs: apibuild: Purge irrelevant typed parameter APIs from ignore
util: typedparam: Separate code to assign value to typed parameter
util: typedparam: Optionally copy strings passed to
virTypedParameterAssignValue
util: typedparam: Simplify handling of lists of typed parameters
qemu: Remove stale comment for qemuDomainBlockStats
qemu: monitor: Refactor cleanup in
qemuMonitorJSONBlockStatsCollectData
qemu: monitor: Refactor cleanup in qemuMonitorJSONGetOneBlockStatsInfo
qemu: monitor: Refactor cleanup in qemuMonitorJSONGetAllBlockStatsInfo
qemu: monitor: Change fields in qemuBlockStats to 'unsigned'
qemu: driver: Remove pointless macro QEMU_BLOCK_STAT_TOTAL
qemu: driver: Don't return anything from
qemuDomainBlockStatsGatherTotals
qemu: driver: Remove QEMU_ADD_BLOCK_PARAM_LL macro
qemu: Use virTypedParamList in the bulk stats gathering functions
qemu: driver: Stop using QEMU_ADD_BLOCK_PARAM_ULL in
qemuDomainGetStatsOneBlockFallback
qemu: driver: Stop using QEMU_ADD_BLOCK_PARAM_ULL in
qemuDomainGetStatsOneBlock
qemu: driver: Stop using QEMU_ADD_BLOCK_PARAM_ULL in
qemuDomainGetStatsBlockExportBackendStorage
qemu: driver: Stop using QEMU_ADD_BLOCK_PARAM_ULL in
qemuDomainGetStatsBlockExportFrontend
qemu: driver: Remove unused cleanup labels in stats gathering
functions
docs/Makefile.am | 2 +-
docs/apibuild.py | 7 +-
src/libvirt_private.syms | 10 +-
src/qemu/qemu_driver.c | 635 ++++++-----------
src/qemu/qemu_monitor.h | 16 +-
src/qemu/qemu_monitor_json.c | 57 +-
src/util/Makefile.inc.am | 1 +
src/util/virtypedparam-public.c | 886 ++++++++++++++++++++++++
src/util/virtypedparam.c | 1129 +++++++------------------------
src/util/virtypedparam.h | 67 +-
10 files changed, 1440 insertions(+), 1370 deletions(-)
create mode 100644 src/util/virtypedparam-public.c
--
2.21.0
2
44
Libvirt dropped UML in v5.0.0 so there's no reason for us not to follow along.
Signed-off-by: Erik Skultety <eskultet(a)redhat.com>
---
conf/default.cfg | 26 --------------------------
lib/Sys/Virt/TCK.pm | 2 --
2 files changed, 28 deletions(-)
diff --git a/conf/default.cfg b/conf/default.cfg
index d9fd0cb..39d9b04 100644
--- a/conf/default.cfg
+++ b/conf/default.cfg
@@ -95,32 +95,6 @@ kernels = (
kernel = http://dl.fedoraproject.org/pub/fedora/linux/releases/30/Everything/x86_64/…
initrd = http://dl.fedoraproject.org/pub/fedora/linux/releases/30/Everything/x86_64/…
}
- # User mode linux i686 needs custom kernel + root filesystem
- {
- arch = i686
- ostype = uml
- kernel = {
- source = http://user-mode-linux.sourceforge.net/linux-2.6.24-rc7.bz2
- uncompress = bzip2
- }
- disk = {
- source = http://fs.devloop.org.uk/filesystems/Fedora13/Fedora13-x86-root_fs.bz2
- uncompress = bzip2
- }
- }
- # User mode linux x86_64 needs custom kernel + root filesystem
- {
- arch = x86_64
- ostype = uml
- kernel = {
- source = http://user-mode-linux.sourceforge.net/linux-2.6.24-x86_64.bz2
- uncompress = bzip2
- }
- disk = {
- source = http://fs.devloop.org.uk/filesystems/Fedora13/Fedora13-AMD64-root_fs.bz2
- uncompress = bzip2
- }
- }
# LXC containers need a virtual container filesystem somewhere
# {
# arch = x86_64
diff --git a/lib/Sys/Virt/TCK.pm b/lib/Sys/Virt/TCK.pm
index 3ea06cc..a641d01 100644
--- a/lib/Sys/Virt/TCK.pm
+++ b/lib/Sys/Virt/TCK.pm
@@ -681,8 +681,6 @@ sub get_disk_dev {
my $dev;
if ($ostype eq "xen") {
$dev = "xvda";
- } elsif ($ostype eq "uml") {
- $dev = "ubda";
} elsif ($ostype eq "hvm") {
if ($domain eq "kvm" ||
$domain eq "qemu" ||
--
2.20.1
2
1
[libvirt] [libvirt-tck PATCH] domain: Relax the checks matching disk sizes
by Erik Skultety 24 Sep '19
by Erik Skultety 24 Sep '19
24 Sep '19
There may be some preallocation going on depending on what host
filesystem is in place which may mess up the numbers we expect mainly in
allocation, so let's stick with exact matching of the capacity and
relaxing the checks on allocation and physical size as commit 30beeb2e
did.
Signed-off-by: Erik Skultety <eskultet(a)redhat.com>
---
scripts/domain/121-block-info.t | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/domain/121-block-info.t b/scripts/domain/121-block-info.t
index bfff48c..d9d644e 100644
--- a/scripts/domain/121-block-info.t
+++ b/scripts/domain/121-block-info.t
@@ -98,8 +98,8 @@ ok_domain(sub { $dom = $conn->create_domain($xml) }, "Create domain");
$xml = $dom->get_xml_description();
is($dom->get_block_info($dst2,0)->{capacity}, 1024*1024*50, "Get disk capacity info");
-is($dom->get_block_info($dst2,0)->{allocation}, 1024*1024, "Get disk allocation info");
-is($dom->get_block_info($dst2,0)->{physical}, 1024*1024*50, "Get disk physical info");
+ok($dom->get_block_info($dst2,0)->{allocation} >= 1024*1024, "Get disk allocation info");
+ok($dom->get_block_info($dst2,0)->{physical} >= 1024*1024*50, "Get disk physical info");
is($dom->get_block_info($dst,0)->{capacity}, 1024*1024*50, "Get disk capacity info");
--
2.20.1
2
1
[libvirt] [libvirt-tck PATCH] conf: Upgrade the used version of fedora to 30
by Erik Skultety 24 Sep '19
by Erik Skultety 24 Sep '19
24 Sep '19
Fedora 28 is already EOL and the URLs don't work anymore either because
EOL resources eventually move to
http://archives.fedoraproject.org/pub/archive/fedora/ from
https://dl.fedoraproject.org/pub/fedora/linux/releases/.
---
Notes:
I'm wondering whether we shouldn't drop the secondary i686 sections as well
since i686 will die starting with fedora 31. On a similar note with UML,
upstream libvirt dropped it a while ago.
conf/default.cfg | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/conf/default.cfg b/conf/default.cfg
index b97688e..d9fd0cb 100644
--- a/conf/default.cfg
+++ b/conf/default.cfg
@@ -49,7 +49,7 @@ images = (
hvm
xen
)
- osname = fedora-28
+ osname = fedora-30
}
)
@@ -75,25 +75,25 @@ images = (
# empty sparse root FS will be created
#
kernels = (
- # Fedora 28 i686 PAE has pv_ops, so one kernel can do both Xen and KVM guests here
+ # Fedora 30 i686 PAE has pv_ops, so one kernel can do both Xen and KVM guests here
{
arch = i686
ostype = (
hvm
xen
)
- kernel = http://dl.fedoraproject.org/pub/fedora-secondary/releases/28/Everything/i38…
- initrd = http://dl.fedoraproject.org/pub/fedora-secondary/releases/28/Everything/i38…
+ kernel = http://dl.fedoraproject.org/pub/fedora-secondary/releases/30/Everything/i38…
+ initrd = http://dl.fedoraproject.org/pub/fedora-secondary/releases/30/Everything/i38…
}
- # Fedora 28 x86_64 has pv_ops, so one kernel can do both Xen and KVM guests here
+ # Fedora 30 x86_64 has pv_ops, so one kernel can do both Xen and KVM guests here
{
arch = x86_64
ostype = (
hvm
xen
)
- kernel = http://dl.fedoraproject.org/pub/fedora/linux/releases/28/Everything/x86_64/…
- initrd = http://dl.fedoraproject.org/pub/fedora/linux/releases/28/Everything/x86_64/…
+ kernel = http://dl.fedoraproject.org/pub/fedora/linux/releases/30/Everything/x86_64/…
+ initrd = http://dl.fedoraproject.org/pub/fedora/linux/releases/30/Everything/x86_64/…
}
# User mode linux i686 needs custom kernel + root filesystem
{
--
2.20.1
3
3
[libvirt] [libvirt-tck PATCH] TCK.pm: Define libvirt VMs with an RNG device
by Erik Skultety 24 Sep '19
by Erik Skultety 24 Sep '19
24 Sep '19
The nwfilter 220-no-ip-spoofing.t test relies on an SSH connection to
the test VM. However, because the domain definition passed to libvirt
lacks an RNG device, the SSH server isn't started inside the guest
(even though that is the default on virt-builder images) and therefore:
"ssh: connect to host 192.168.122.227 port 22: Connection refused"
is returned which in turn makes a bunch of sub tests fail because the
very basic premise - a working SSH connection - is false.
This patch makes sure a virtio RNG is contained in the XML definition,
thus causing the SSH server to be started successfully, thus allowing
all the subtests to pass.
---
lib/Sys/Virt/TCK.pm | 4 ++++
lib/Sys/Virt/TCK/DomainBuilder.pm | 21 +++++++++++++++++++++
2 files changed, 25 insertions(+)
diff --git a/lib/Sys/Virt/TCK.pm b/lib/Sys/Virt/TCK.pm
index 389d5cc..3ea06cc 100644
--- a/lib/Sys/Virt/TCK.pm
+++ b/lib/Sys/Virt/TCK.pm
@@ -807,6 +807,8 @@ sub generic_machine_domain {
$b->disk(src => $config{root},
dst => $config{dev},
type => "file");
+ $b->rng(backend_model => "random",
+ backend => "/dev/urandom");
if ($config{firstboot}) {
print "# Running the first boot\n";
@@ -865,6 +867,8 @@ sub generic_machine_domain {
dst => $config{dev},
type => "file",
shareable => $shareddisk);
+ $b->rng(backend_model => "random",
+ backend => "/dev/urandom");
return $b;
}
}
diff --git a/lib/Sys/Virt/TCK/DomainBuilder.pm b/lib/Sys/Virt/TCK/DomainBuilder.pm
index 45336b5..be8708f 100644
--- a/lib/Sys/Virt/TCK/DomainBuilder.pm
+++ b/lib/Sys/Virt/TCK/DomainBuilder.pm
@@ -49,6 +49,7 @@ sub new {
graphics => [],
hostdevs => [],
seclabel => {},
+ rng => {},
};
bless $self, $class;
@@ -328,6 +329,19 @@ sub seclabel {
return $self;
}
+sub rng {
+ my $self = shift;
+ my %params = @_;
+
+ die "backend model parameter is required" unless $params{backend_model};
+ die "backend parameter is required" unless $params{backend};
+
+ $self->{rng} = \%params;
+ $self->{rng}->{model} = "virtio" unless defined $self->{rng}->{model};
+
+ return $self;
+}
+
sub as_xml {
my $self = shift;
@@ -504,6 +518,13 @@ sub as_xml {
$w->endTag("graphics");
}
$w->emptyTag("console", type => "pty");
+
+ $w->startTag("rng",
+ model => $self->{rng}->{model});
+ $w->dataElement("backend", $self->{rng}->{backend},
+ model => $self->{rng}->{backend_model});
+ $w->endTag("rng");
+
$w->endTag("devices");
if ($self->{seclabel}->{model}) {
$w->startTag("seclabel",
--
2.20.1
3
8
[libvirt] [PATCH 0/4] Sanitize restrictions imposed by VIR_DOMAIN_START_AUTODESTROY
by Peter Krempa 24 Sep '19
by Peter Krempa 24 Sep '19
24 Sep '19
Migration to a different host is the only reasonable restriction that
should apply. Fix the wording in the docs and remove the restrictions
of saving the VM, taking a snapshot and taking a checkpoint.
Peter Krempa (4):
lib: Lessen restrictions on VIR_DOMAIN_START_AUTODESTROY
qemu: migration: Forbid only remote migration if autodestroy is active
for VM
qemu: snapshot: Don't forbid snapshot if autodestroy is registered
qemu: checkpoint: Don't forbid checkpoint when VM is marked for
autodestroy
src/libvirt-domain.c | 9 ++++++---
src/qemu/qemu_driver.c | 12 ------------
src/qemu/qemu_migration.c | 3 ++-
3 files changed, 8 insertions(+), 16 deletions(-)
--
2.21.0
2
8
24 Sep '19
Subject says it all, basically. It's important to note that we will add
the whole machinery to install meson via pip and build the projects in
platforms where the minimum required version of meson is not present,
I really would like to go ahead with this patch as soon as I can have
the libosinfo MR acked.
Fabiano FidĂŞncio (4):
libosinfo: Add meson dependency
Only build libosinfo on systems with meson >= 0.49.0
Update libosinfo's archive_format
Switch libosinfo builds to Meson
guests/host_vars/libvirt-centos-7/main.yml | 1 -
guests/host_vars/libvirt-debian-9/main.yml | 1 -
guests/host_vars/libvirt-ubuntu-16/main.yml | 1 -
guests/host_vars/libvirt-ubuntu-18/main.yml | 1 -
.../build/projects/libosinfo+mingw32.yml | 6 ++---
.../build/projects/libosinfo+mingw64.yml | 6 ++---
guests/playbooks/build/projects/libosinfo.yml | 26 ++++++++++++++-----
guests/vars/projects/libosinfo+mingw32.yml | 1 +
guests/vars/projects/libosinfo+mingw64.yml | 1 +
guests/vars/projects/libosinfo.yml | 1 +
jenkins/projects/libosinfo+mingw32.yaml | 6 ++---
jenkins/projects/libosinfo+mingw64.yaml | 6 ++---
jenkins/projects/libosinfo.yaml | 26 +++++++++++++------
13 files changed, 52 insertions(+), 31 deletions(-)
--
2.23.0
2
6
[libvirt] [PATCH 00/10] remove repetition of URI path validation
by Daniel Henrique Barboza 23 Sep '19
by Daniel Henrique Barboza 23 Sep '19
23 Sep '19
This is a code repetition that I crossed a few times, then
I noticed that Cole Robinson suggested a solution for it
in the wiki. Here it is.
Daniel Henrique Barboza (10):
src/driver.c: add virConnectValidateURIPath()
interface_backend_netcf.c: use virConnectValidateURIPath()
interface_backend_udev.c: use virConnectValidateURIPath()
bridge_driver.c: virConnectValidateURIPath()
node_device_driver.c: use virConnectValidateURIPath()
secret_driver.c: use virConnectValidateURIPath()
storage_driver.c: use virConnectValidateURIPath()
qemu_driver.c: use virConnectValidateURIPath()
vbox_common.c: use virConnectValidateURIPath()
vbox_driver.c: use virConnectValidateURIPath()
src/driver.c | 25 +++++++++++++++++++++++++
src/driver.h | 4 ++++
src/interface/interface_backend_netcf.c | 17 ++---------------
src/interface/interface_backend_udev.c | 17 ++---------------
src/libvirt_private.syms | 1 +
src/network/bridge_driver.c | 19 ++++---------------
src/node_device/node_device_driver.c | 17 ++---------------
src/qemu/qemu_driver.c | 20 ++++----------------
src/secret/secret_driver.c | 17 ++---------------
src/storage/storage_driver.c | 17 ++---------------
src/vbox/vbox_common.c | 16 ++--------------
src/vbox/vbox_driver.c | 16 ++--------------
12 files changed, 52 insertions(+), 134 deletions(-)
--
2.21.0
2
12
[libvirt] [PATCH] build: ensure Makefile.inc.am is checked for long lines
by Daniel P. Berrangé 23 Sep '19
by Daniel P. Berrangé 23 Sep '19
23 Sep '19
The filename match rule was accidentally excluding the
Makefile.inc.am files from the long lines check.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
cfg.mk | 2 +-
src/interface/Makefile.inc.am | 6 ++++--
src/libxl/Makefile.inc.am | 5 ++++-
src/network/Makefile.inc.am | 6 ++++--
src/node_device/Makefile.inc.am | 6 ++++--
src/nwfilter/Makefile.inc.am | 6 ++++--
src/secret/Makefile.inc.am | 6 ++++--
src/storage/Makefile.inc.am | 27 ++++++++++++++++++---------
8 files changed, 43 insertions(+), 21 deletions(-)
diff --git a/cfg.mk b/cfg.mk
index a7c883830f..3731a2830b 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -737,7 +737,7 @@ sc_prohibit_long_lines:
halt='Wrap long lines in expected output files' \
$(_sc_search_regexp)
@prohibit='.{80}' \
- in_vc_files='Makefile\.am' \
+ in_vc_files='Makefile(\.inc)?\.am' \
halt='Wrap long lines in Makefiles' \
$(_sc_search_regexp)
diff --git a/src/interface/Makefile.inc.am b/src/interface/Makefile.inc.am
index a88df0bd11..baa85b4ba9 100644
--- a/src/interface/Makefile.inc.am
+++ b/src/interface/Makefile.inc.am
@@ -75,10 +75,12 @@ VIRTINTERFACED_UNIT_VARS = \
-e 's|[@]sockprefix[@]|virtinterfaced|g' \
$(NULL)
-virtinterfaced.service: interface/virtinterfaced.service.in $(top_builddir)/config.status
+virtinterfaced.service: interface/virtinterfaced.service.in \
+ $(top_builddir)/config.status
$(AM_V_GEN)$(SED) $(VIRTINTERFACED_UNIT_VARS) $< > $@-t && mv $@-t $@
-virtinterface%.socket: remote/libvirt%.socket.in $(top_builddir)/config.status
+virtinterface%.socket: remote/libvirt%.socket.in \
+ $(top_builddir)/config.status
$(AM_V_GEN)$(SED) $(VIRTINTERFACED_UNIT_VARS) $< > $@-t && mv $@-t $@
interface/virtinterfaced.conf: remote/libvirtd.conf.in
diff --git a/src/libxl/Makefile.inc.am b/src/libxl/Makefile.inc.am
index a2151162e6..18a06a47d1 100644
--- a/src/libxl/Makefile.inc.am
+++ b/src/libxl/Makefile.inc.am
@@ -80,9 +80,12 @@ SYSTEMD_UNIT_FILES_IN += \
libxl/virtxend.service.in \
$(NULL)
+LIBXL_UNIT_COND="ConditionPathExists=/proc/xen/capabilities"
+LIBXL_UNIT_CONFLICT="Conflicts=$(LIBVIRTD_SOCKET_UNIT_FILES)"
+
VIRTXEND_UNIT_VARS = \
$(COMMON_UNIT_VARS) \
- -e 's|[@]deps[@]|Conflicts=$(LIBVIRTD_SOCKET_UNIT_FILES)\nConditionPathExists=/proc/xen/capabilities|g' \
+ -e 's|[@]deps[@]|$(LIBXL_UNIT_CONFLICT)\n$(LIBXL_UNIT_COND)|g' \
-e 's|[@]name[@]|Libvirt libxl|g' \
-e 's|[@]service[@]|virtxend|g' \
-e 's|[@]sockprefix[@]|virtxend|g' \
diff --git a/src/network/Makefile.inc.am b/src/network/Makefile.inc.am
index 9f20dad7b3..17467a65ad 100644
--- a/src/network/Makefile.inc.am
+++ b/src/network/Makefile.inc.am
@@ -82,10 +82,12 @@ VIRTNETWORKD_UNIT_VARS = \
-e 's|[@]sockprefix[@]|virtnetworkd|g' \
$(NULL)
-virtnetworkd.service: network/virtnetworkd.service.in $(top_builddir)/config.status
+virtnetworkd.service: network/virtnetworkd.service.in \
+ $(top_builddir)/config.status
$(AM_V_GEN)$(SED) $(VIRTNETWORKD_UNIT_VARS) $< > $@-t && mv $@-t $@
-virtnetwork%.socket: remote/libvirt%.socket.in $(top_builddir)/config.status
+virtnetwork%.socket: remote/libvirt%.socket.in \
+ $(top_builddir)/config.status
$(AM_V_GEN)$(SED) $(VIRTNETWORKD_UNIT_VARS) $< > $@-t && mv $@-t $@
network/virtnetworkd.conf: remote/libvirtd.conf.in
diff --git a/src/node_device/Makefile.inc.am b/src/node_device/Makefile.inc.am
index 5a6525d843..eac7f92e88 100644
--- a/src/node_device/Makefile.inc.am
+++ b/src/node_device/Makefile.inc.am
@@ -98,10 +98,12 @@ VIRTNODEDEVD_UNIT_VARS = \
-e 's|[@]sockprefix[@]|virtnodedevd|g' \
$(NULL)
-virtnodedevd.service: node_device/virtnodedevd.service.in $(top_builddir)/config.status
+virtnodedevd.service: node_device/virtnodedevd.service.in \
+ $(top_builddir)/config.status
$(AM_V_GEN)$(SED) $(VIRTNODEDEVD_UNIT_VARS) $< > $@-t && mv $@-t $@
-virtnodedev%.socket: remote/libvirt%.socket.in $(top_builddir)/config.status
+virtnodedev%.socket: remote/libvirt%.socket.in \
+ $(top_builddir)/config.status
$(AM_V_GEN)$(SED) $(VIRTNODEDEVD_UNIT_VARS) $< > $@-t && mv $@-t $@
node_device/virtnodedevd.conf: remote/libvirtd.conf.in
diff --git a/src/nwfilter/Makefile.inc.am b/src/nwfilter/Makefile.inc.am
index 7693634e29..6acb45705c 100644
--- a/src/nwfilter/Makefile.inc.am
+++ b/src/nwfilter/Makefile.inc.am
@@ -83,10 +83,12 @@ VIRTNWFILTERD_UNIT_VARS = \
-e 's|[@]sockprefix[@]|virtnwfilterd|g' \
$(NULL)
-virtnwfilterd.service: nwfilter/virtnwfilterd.service.in $(top_builddir)/config.status
+virtnwfilterd.service: nwfilter/virtnwfilterd.service.in \
+ $(top_builddir)/config.status
$(AM_V_GEN)$(SED) $(VIRTNWFILTERD_UNIT_VARS) $< > $@-t && mv $@-t $@
-virtnwfilter%.socket: remote/libvirt%.socket.in $(top_builddir)/config.status
+virtnwfilter%.socket: remote/libvirt%.socket.in \
+ $(top_builddir)/config.status
$(AM_V_GEN)$(SED) $(VIRTNWFILTERD_UNIT_VARS) $< > $@-t && mv $@-t $@
nwfilter/virtnwfilterd.conf: remote/libvirtd.conf.in
diff --git a/src/secret/Makefile.inc.am b/src/secret/Makefile.inc.am
index 37f816406e..76bc67418c 100644
--- a/src/secret/Makefile.inc.am
+++ b/src/secret/Makefile.inc.am
@@ -71,10 +71,12 @@ VIRTSECRETD_UNIT_VARS = \
-e 's|[@]sockprefix[@]|virtsecretd|g' \
$(NULL)
-virtsecretd.service: secret/virtsecretd.service.in $(top_builddir)/config.status
+virtsecretd.service: secret/virtsecretd.service.in \
+ $(top_builddir)/config.status
$(AM_V_GEN)$(SED) $(VIRTSECRETD_UNIT_VARS) $< > $@-t && mv $@-t $@
-virtsecret%.socket: remote/libvirt%.socket.in $(top_builddir)/config.status
+virtsecret%.socket: remote/libvirt%.socket.in \
+ $(top_builddir)/config.status
$(AM_V_GEN)$(SED) $(VIRTSECRETD_UNIT_VARS) $< > $@-t && mv $@-t $@
secret/virtsecretd.conf: remote/libvirtd.conf.in
diff --git a/src/storage/Makefile.inc.am b/src/storage/Makefile.inc.am
index fd0d57d2b6..4dccb14ac1 100644
--- a/src/storage/Makefile.inc.am
+++ b/src/storage/Makefile.inc.am
@@ -175,10 +175,12 @@ VIRTSTORAGED_UNIT_VARS = \
-e 's|[@]sockprefix[@]|virtstoraged|g' \
$(NULL)
-virtstoraged.service: storage/virtstoraged.service.in $(top_builddir)/config.status
+virtstoraged.service: storage/virtstoraged.service.in \
+ $(top_builddir)/config.status
$(AM_V_GEN)$(SED) $(VIRTSTORAGED_UNIT_VARS) $< > $@-t && mv $@-t $@
-virtstorage%.socket: remote/libvirt%.socket.in $(top_builddir)/config.status
+virtstorage%.socket: remote/libvirt%.socket.in \
+ $(top_builddir)/config.status
$(AM_V_GEN)$(SED) $(VIRTSTORAGED_UNIT_VARS) $< > $@-t && mv $@-t $@
storage/virtstoraged.conf: remote/libvirtd.conf.in
@@ -264,7 +266,8 @@ libvirt_storage_backend_iscsi_la_LIBADD = \
endif WITH_STORAGE_ISCSI
if WITH_STORAGE_ISCSI_DIRECT
-libvirt_storage_backend_iscsi_direct_la_SOURCES = $(STORAGE_DRIVER_ISCSI_DIRECT_SOURCES)
+libvirt_storage_backend_iscsi_direct_la_SOURCES = \
+ $(STORAGE_DRIVER_ISCSI_DIRECT_SOURCES)
libvirt_storage_backend_iscsi_direct_la_CFLAGS = \
-I$(srcdir)/conf \
-I$(srcdir)/secret \
@@ -346,13 +349,15 @@ libvirt_storage_backend_rbd_la_LDFLAGS = $(AM_LDFLAGS_MOD)
endif WITH_STORAGE_RBD
if WITH_STORAGE_SHEEPDOG
-libvirt_storage_backend_sheepdog_la_SOURCES = $(STORAGE_DRIVER_SHEEPDOG_SOURCES)
+libvirt_storage_backend_sheepdog_la_SOURCES = \
+ $(STORAGE_DRIVER_SHEEPDOG_SOURCES)
libvirt_storage_backend_sheepdog_la_CFLAGS = \
-I$(srcdir)/conf \
$(AM_CFLAGS) \
$(NULL)
-libvirt_storage_backend_sheepdog_priv_la_SOURCES = $(STORAGE_DRIVER_SHEEPDOG_SOURCES)
+libvirt_storage_backend_sheepdog_priv_la_SOURCES = \
+ $(STORAGE_DRIVER_SHEEPDOG_SOURCES)
libvirt_storage_backend_sheepdog_priv_la_CFLAGS = \
-I$(srcdir)/conf \
$(AM_CFLAGS) \
@@ -368,7 +373,8 @@ libvirt_storage_backend_sheepdog_la_LIBADD = \
endif WITH_STORAGE_SHEEPDOG
if WITH_STORAGE_GLUSTER
-libvirt_storage_backend_gluster_la_SOURCES = $(STORAGE_DRIVER_GLUSTER_SOURCES)
+libvirt_storage_backend_gluster_la_SOURCES = \
+ $(STORAGE_DRIVER_GLUSTER_SOURCES)
libvirt_storage_backend_gluster_la_LIBADD = \
libvirt.la \
$(GLUSTERFS_LIBS) \
@@ -384,7 +390,8 @@ storagebackend_LTLIBRARIES += libvirt_storage_backend_gluster.la
libvirt_storage_backend_gluster_la_LDFLAGS = $(AM_LDFLAGS_MOD)
-libvirt_storage_file_gluster_la_SOURCES = $(STORAGE_FILE_GLUSTER_SOURCES)
+libvirt_storage_file_gluster_la_SOURCES = \
+ $(STORAGE_FILE_GLUSTER_SOURCES)
libvirt_storage_file_gluster_la_LIBADD = \
libvirt.la \
$(GLUSTERFS_LIBS) \
@@ -401,7 +408,8 @@ libvirt_storage_file_gluster_la_LDFLAGS = $(AM_LDFLAGS_MOD)
endif WITH_STORAGE_GLUSTER
if WITH_STORAGE_ZFS
-libvirt_storage_backend_zfs_la_SOURCES = $(STORAGE_DRIVER_ZFS_SOURCES)
+libvirt_storage_backend_zfs_la_SOURCES = \
+ $(STORAGE_DRIVER_ZFS_SOURCES)
libvirt_storage_backend_zfs_la_CFLAGS = \
-I$(srcdir)/conf \
$(AM_CFLAGS) \
@@ -416,7 +424,8 @@ libvirt_storage_backend_zfs_la_LIBADD = \
endif WITH_STORAGE_ZFS
if WITH_STORAGE_VSTORAGE
-libvirt_storage_backend_vstorage_la_SOURCES = $(STORAGE_DRIVER_VSTORAGE_SOURCES)
+libvirt_storage_backend_vstorage_la_SOURCES = \
+ $(STORAGE_DRIVER_VSTORAGE_SOURCES)
libvirt_storage_backend_vstorage_la_CFLAGS = \
-I$(srcdir)/conf \
$(AM_CFLAGS) \
--
2.21.0
2
1
23 Sep '19
libvirt-dbus has switched its build system to meson and requires 0.49.0
or newer. It means, let's *not* build libvirt-dbus on:
- Debian 9 (or older);
- Ubuntu 18 (or older);
- CentOS 7
Signed-off-by: Fabiano FidĂŞncio <fidencio(a)redhat.com>
---
.../playbooks/build/projects/libvirt-dbus.yml | 37 +++----------------
guests/vars/projects/libvirt-dbus.yml | 1 +
jenkins/projects/libvirt-dbus.yaml | 30 +++------------
3 files changed, 12 insertions(+), 56 deletions(-)
diff --git a/guests/playbooks/build/projects/libvirt-dbus.yml b/guests/playbooks/build/projects/libvirt-dbus.yml
index a6ff025..a031ba7 100644
--- a/guests/playbooks/build/projects/libvirt-dbus.yml
+++ b/guests/playbooks/build/projects/libvirt-dbus.yml
@@ -1,9 +1,9 @@
---
- set_fact:
name: libvirt-dbus
+ # libvirt-dbus depends on meson 0.49.0 which is not available on
+ # CentOS 7, Debian 9, Ubuntu 18;
machines:
- - libvirt-centos-7
- - libvirt-debian-9
- libvirt-debian-10
- libvirt-debian-sid
- libvirt-fedora-29
@@ -12,42 +12,15 @@
- libvirt-freebsd-11
- libvirt-freebsd-12
- libvirt-freebsd-current
- - libvirt-ubuntu-16
- - libvirt-ubuntu-18
archive_format: xz
git_url: '{{ git_urls["libvirt-dbus"][git_remote] }}'
- include: '{{ playbook_base }}/jobs/prepare.yml'
-- include: '{{ playbook_base }}/jobs/autotools-build-job.yml'
-- include: '{{ playbook_base }}/jobs/autotools-syntax-check-job.yml'
+- include: '{{ playbook_base }}/jobs/meson-build-job.yml'
+- include: '{{ playbook_base }}/jobs/meson-check-job.yml'
+- include: '{{ playbook_base }}/jobs/meson-rpm-job.yml'
vars:
- # CentOS 7 doesn't include Python 3, while the versions of flake8
- # and pyflakes currently available on FreeBSD (3.5.0 and 2.0.0
- # respectively) are not compatible
machines:
- - libvirt-debian-9
- - libvirt-debian-10
- - libvirt-debian-sid
- libvirt-fedora-29
- libvirt-fedora-30
- libvirt-fedora-rawhide
- - libvirt-ubuntu-16
- - libvirt-ubuntu-18
-- include: '{{ playbook_base }}/jobs/autotools-check-job.yml'
- vars:
- # CentOS 7 doesn't include Python 3 and the version in Ubuntu
- # 16.04 is too old
- machines:
- - libvirt-debian-9
- - libvirt-debian-10
- - libvirt-debian-sid
- - libvirt-fedora-29
- - libvirt-fedora-30
- - libvirt-fedora-rawhide
- - libvirt-freebsd-11
- - libvirt-freebsd-12
- - libvirt-freebsd-current
- - libvirt-ubuntu-18
-- include: '{{ playbook_base }}/jobs/autotools-rpm-job.yml'
- vars:
- machines: '{{ rpm_machines }}'
diff --git a/guests/vars/projects/libvirt-dbus.yml b/guests/vars/projects/libvirt-dbus.yml
index ce902cb..406ad86 100644
--- a/guests/vars/projects/libvirt-dbus.yml
+++ b/guests/vars/projects/libvirt-dbus.yml
@@ -3,6 +3,7 @@ packages:
- dbus-daemon
- flake8
- glib2
+ - meson
- python3
- python3-dbus
- python3-gi
diff --git a/jenkins/projects/libvirt-dbus.yaml b/jenkins/projects/libvirt-dbus.yaml
index 2b72fb4..82eb892 100644
--- a/jenkins/projects/libvirt-dbus.yaml
+++ b/jenkins/projects/libvirt-dbus.yaml
@@ -1,9 +1,9 @@
---
- project:
name: libvirt-dbus
+ # libvirt-dbus requires meson 0.49.0, which is not available on
+ # CentOS 7 and Debian 9;
machines:
- - libvirt-centos-7
- - libvirt-debian-9
- libvirt-debian-10
- libvirt-fedora-29
- libvirt-fedora-30
@@ -14,31 +14,13 @@
archive_format: xz
git_url: '{git_urls[libvirt-dbus][default]}'
jobs:
- - autotools-build-job:
+ - meson-build-job:
parent_jobs: 'libvirt-glib-build'
- - autotools-syntax-check-job:
+ - meson-check-job:
parent_jobs: 'libvirt-dbus-build'
- # CentOS 7 doesn't include Python 3, while the versions of flake8
- # and pyflakes currently available on FreeBSD (3.5.0 and 2.0.0
- # respectively) are not compatible
- machines:
- - libvirt-debian-9
- - libvirt-debian-10
- - libvirt-fedora-29
- - libvirt-fedora-30
- - libvirt-fedora-rawhide
- - autotools-check-job:
- parent_jobs: 'libvirt-dbus-syntax-check'
- # CentOS 7 doesn't include Python 3 and the version in Ubuntu
- # 16.04 is too old
+ - meson-rpm-job:
+ parent_jobs: 'libvirt-dbus-check'
machines:
- - libvirt-debian-9
- - libvirt-debian-10
- libvirt-fedora-29
- libvirt-fedora-30
- libvirt-fedora-rawhide
- - libvirt-freebsd-11
- - libvirt-freebsd-12
- - autotools-rpm-job:
- parent_jobs: 'libvirt-dbus-check'
- machines: '{rpm_machines}'
--
2.23.0
4
9
[libvirt] [PATCH] qemu: snapshot: Do ACL check prior to checkpoint interlocking
by Peter Krempa 23 Sep '19
by Peter Krempa 23 Sep '19
23 Sep '19
Commit 7efe930ec3c introduced interlock of snapshots and checkpoints,
but the check is executed prior to the snapshot API ACL check. This
means that an unauthorized user can see whether a VM exists if it has a
checkpoint.
Move the checks to proper places.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
Given that currently checkpoints by themselves are not very useful I
doubt that there are users which could hit this. Thus I'm sending it
also directly to the public mailing list for faster turnaround.
src/qemu/qemu_driver.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 0753904472..f7f059b6d6 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -15902,18 +15902,18 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain,
if (!(vm = qemuDomObjFromDomain(domain)))
goto cleanup;
- if (virDomainListCheckpoints(vm->checkpoints, NULL, domain, NULL, 0) > 0) {
- virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
- _("cannot create snapshot while checkpoint exists"));
- goto cleanup;
- }
-
priv = vm->privateData;
cfg = virQEMUDriverGetConfig(driver);
if (virDomainSnapshotCreateXMLEnsureACL(domain->conn, vm->def, flags) < 0)
goto cleanup;
+ if (virDomainListCheckpoints(vm->checkpoints, NULL, domain, NULL, 0) > 0) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("cannot create snapshot while checkpoint exists"));
+ goto cleanup;
+ }
+
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
--
2.21.0
2
1
23 Sep '19
We stopped generating a giant ChangeLog file in
commit ce97c33a795dec053f1e85c65ecd924b8c6ec4ba
Author: Andrea Bolognani <abologna(a)redhat.com>
Date: Mon Apr 1 17:33:03 2019 +0200
maint: Stop generating ChangeLog from git
so there is no reason to compress it anymore.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
libvirt.spec.in | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index e2f2a40238..c7448ed6a6 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -1225,7 +1225,6 @@ rm -f po/stamp-po
--with-init-script=systemd \
%{?arg_login_shell}
make %{?_smp_mflags} V=1
-gzip -9 ChangeLog
%install
rm -fr %{buildroot}
@@ -1532,7 +1531,7 @@ exit 0
%files
%files docs
-%doc AUTHORS ChangeLog.gz NEWS README README.md
+%doc AUTHORS ChangeLog NEWS README README.md
%doc libvirt-docs/*
%files daemon
--
2.21.0
2
1
Hi,
with the new systemd 243 libvirt-lxc seems broken.
We had the particular symptom already in the past, the TL;DR is:
1. start a lxc guest
2. restart libvirtd
3. guest is gone
This particular change is due to [1] fixed by [2] which as a side
effect will wipe libvirt-lxc containers on daemon restart. After
checking on IRC it seems this wasn't reported to libvirt yet, but for
now it is more a start of a discussion than a bug report.
I have reported this upstream at [1] and we could keep the "discussion
with systemd" there.
If you can/want please chime in there. If it turns out we want/need a
fix in libvirt we can focus on the thread here then.
[1]: https://github.com/systemd/systemd/issues/12386
[2]: https://github.com/systemd/systemd/commit/0219b3524f414e23589e63c6de6a75981…
[3]: https://github.com/systemd/systemd/issues/13629
--
Christian Ehrhardt
Software Engineer, Ubuntu Server
Canonical Ltd
1
0
23 Sep '19
It's been agreed that the projects using libvirt-jenkins-ci would have
the `syntax-check` running as part of their test suite. Therefore,
there's no reason for keeping a job which is not going to be used.
Signed-off-by: Fabiano FidĂŞncio <fidencio(a)redhat.com>
---
.../build/projects/osinfo-db-tools.yml | 1 -
jenkins/jobs/meson.yaml | 39 -------------------
jenkins/projects/osinfo-db-tools.yaml | 4 +-
3 files changed, 1 insertion(+), 43 deletions(-)
diff --git a/guests/playbooks/build/projects/osinfo-db-tools.yml b/guests/playbooks/build/projects/osinfo-db-tools.yml
index d142e0e..67e5f00 100644
--- a/guests/playbooks/build/projects/osinfo-db-tools.yml
+++ b/guests/playbooks/build/projects/osinfo-db-tools.yml
@@ -17,7 +17,6 @@
- include: '{{ playbook_base }}/jobs/prepare.yml'
- include: '{{ playbook_base }}/jobs/meson-build-job.yml'
-- include: '{{ playbook_base }}/jobs/meson-syntax-check-job.yml'
- include: '{{ playbook_base }}/jobs/meson-check-job.yml'
- include: '{{ playbook_base }}/jobs/meson-rpm-job.yml'
vars:
diff --git a/jenkins/jobs/meson.yaml b/jenkins/jobs/meson.yaml
index 02e4395..102d0a4 100644
--- a/jenkins/jobs/meson.yaml
+++ b/jenkins/jobs/meson.yaml
@@ -53,45 +53,6 @@
notify-every-unstable-build: false
send-to-individuals: false
-- job-template:
- id: meson-syntax-check-job
- name: '{name}-syntax-check'
- project-type: matrix
- description: '{title} Syntax Check'
- workspace: '{name}'
- child-workspace: '.'
- block-downstream: true
- block-upstream: true
- wrappers:
- - timeout:
- abort: true
- type: absolute
- timeout: 90
- write-description: 'Aborted build after 90 minutes'
- properties:
- - build-discarder:
- days-to-keep: 30
- num-to-keep: 1000
- triggers:
- - reverse:
- jobs: '{obj:parent_jobs}'
- axes:
- - axis:
- name: systems
- type: slave
- values: '{obj:machines}'
- builders:
- - shell: |
- {global_env}
- {local_env}
- cd build
- ninja syntax-check
- publishers:
- - email:
- recipients: '{obj:spam}'
- notify-every-unstable-build: false
- send-to-individuals: false
-
- job-template:
id: meson-check-job
name: '{name}-check'
diff --git a/jenkins/projects/osinfo-db-tools.yaml b/jenkins/projects/osinfo-db-tools.yaml
index 2a9ea11..8609b46 100644
--- a/jenkins/projects/osinfo-db-tools.yaml
+++ b/jenkins/projects/osinfo-db-tools.yaml
@@ -16,10 +16,8 @@
jobs:
- meson-build-job:
parent_jobs:
- - meson-syntax-check-job:
- parent_jobs: 'osinfo-db-tools-build'
- meson-check-job:
- parent_jobs: 'osinfo-db-tools-syntax-check'
+ parent_jobs: 'osinfo-db-tools-build'
- meson-rpm-job:
parent_jobs: 'osinfo-db-tools-check'
machines:
--
2.23.0
4
8
We need to figure out a way how to check this by our test suite.
Pavel Hrdina (2):
virDomainMigrate3Params: add missing bandwidth postcopy param
virDomainMigrate3Params: add missing parallel connections param
libvirt-override.c | 6 ++++++
1 file changed, 6 insertions(+)
--
2.21.0
2
4
23 Sep '19
Meson build system is simple and quick compared to Autotools and it's
able to fully replace our Autotools usage. There are few drawbacks as
it's a fairly new build system, it requires Python 3.5 and Ninja 1.5.0,
it's still evolving and the user base is not that large and there were
some tweaks required to achieve the same functionality.
However, there are benefits, the configure and build time is way shorter
and build definition files are more readable and easier to maintain.
There are some major changes with Meson build system:
- there is no syntax-check target, the syntax-check is part of Meson
test suite but it's still possible to run it separately,
- Meson forces separation between source and build directories
Signed-off-by: Pavel Hrdina <phrdina(a)redhat.com>
Tested-by: Ján Tomko <jtomko(a)redhat.com>
---
Notes:
changes in v2:
- add -Werror if we are building from git
- fixed -Wframe-larger-than
- removed unrelated fix
- added comment for flake8 ignore warning
- added 'suite' labels 'syntax' and 'unit' for tests
- AUTHORS and libvirt-dbus.spec are generated only when building from git
- run.in is no longer executable, there is a helper script to fix permissions
for the generated run script
- fixed include_directories for test executable, direct paths can be used
since meson 0.50.0
- flake8 is optional as it was with autotools
- added meson version into spec file
.gitignore | 1 +
AUTHORS.in | 2 +-
HACKING.md | 24 ++--
Makefile.am | 51 -------
README.md | 12 +-
autogen.sh | 52 -------
configure.ac | 87 -----------
data/Makefile.am | 83 -----------
data/meson.build | 15 ++
data/session/meson.build | 6 +
data/system/meson.build | 18 +++
docs/Makefile.am | 21 ---
docs/meson.build | 8 ++
libvirt-dbus.spec.in | 9 +-
m4/manywarnings.m4 | 276 -----------------------------------
m4/virt-arg.m4 | 154 --------------------
m4/virt-compile-pie.m4 | 35 -----
m4/virt-compile-warnings.m4 | 203 --------------------------
m4/virt-linker-relro.m4 | 35 -----
m4/warnings.m4 | 79 ----------
meson.build | 279 ++++++++++++++++++++++++++++++++++++
meson_options.txt | 6 +
run.in | 4 +-
src/Makefile.am | 66 ---------
src/meson.build | 42 ++++++
tests/Makefile.am | 57 --------
tests/meson.build | 52 +++++++
tools/fix-perm.sh | 3 +
tools/gen-authors.sh | 4 +
29 files changed, 463 insertions(+), 1221 deletions(-)
delete mode 100644 Makefile.am
delete mode 100755 autogen.sh
delete mode 100644 configure.ac
delete mode 100644 data/Makefile.am
create mode 100644 data/meson.build
create mode 100644 data/session/meson.build
create mode 100644 data/system/meson.build
delete mode 100644 docs/Makefile.am
create mode 100644 docs/meson.build
delete mode 100644 m4/manywarnings.m4
delete mode 100644 m4/virt-arg.m4
delete mode 100644 m4/virt-compile-pie.m4
delete mode 100644 m4/virt-compile-warnings.m4
delete mode 100644 m4/virt-linker-relro.m4
delete mode 100644 m4/warnings.m4
create mode 100644 meson.build
create mode 100644 meson_options.txt
delete mode 100644 src/Makefile.am
create mode 100644 src/meson.build
delete mode 100644 tests/Makefile.am
create mode 100644 tests/meson.build
create mode 100755 tools/fix-perm.sh
create mode 100755 tools/gen-authors.sh
diff --git a/.gitignore b/.gitignore
index b4abf66..7ed7554 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,6 +19,7 @@ vgcore.*
/aclocal.m4
/autom4te.cache/
/build-aux/
+/build/
/config.h
/config.h.in
/config.log
diff --git a/AUTHORS.in b/AUTHORS.in
index 52202ea..d5a486e 100644
--- a/AUTHORS.in
+++ b/AUTHORS.in
@@ -13,4 +13,4 @@ The primary maintainers of libvirt-dbus are:
Patches have been received from:
-#contributorslist#
+@contributorslist@
diff --git a/HACKING.md b/HACKING.md
index 8903408..e90f136 100644
--- a/HACKING.md
+++ b/HACKING.md
@@ -16,32 +16,40 @@ Alternatively you can use one of the mirrors:
Running from git repository
---------------------------
- * The first step is to run autoreconf to create configure script:
+ * The first step is to run meson to create build directory:
```
- ./autogen.sh
+ meson build
```
Now you can compile libvirt-dbus:
```
- make
+ ninja -C build
```
- * Before posting a patch, you should run tests and perform syntax-checking:
+ * Before posting a patch, you should run tests:
```
- make check
+ ninja -C build test
```
- The test tool requires python3, python3-pytest and python3-dbus.
+ The test tool requires python3, python3-pytest, python3-dbus and flake8.
+
+ It is possible to run only specific test using:
+
+ ```
+ meson test -C build $test-name
+ ```
+
+ or a group of tests:
```
- make syntax-check
+ meson test -C build --suite $label
```
- To run this flake8 package is required.
+ For more information see [https://mesonbuild.com/Unit-tests.html#testing-tool](https://mesonbuild.com….
* To run libvirt-dbus directly from the build dir without installing it
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 0914449..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-SUBDIRS = \
- data \
- docs \
- src \
- tests \
- $(NULL)
-
-ACLOCAL_AMFLAGS = -I m4
-
-EXTRA_DIST = \
- $(PACKAGE).spec \
- $(PACKAGE).spec.in \
- AUTHORS.in \
- HACKING.md \
- README.md \
- $(NULL)
-
-DISTCLEAN_FILES = \
- $(PACKAGE).spec \
- $(NULL)
-
-rpm: clean
- @(unset CDPATH ; $(MAKE) dist && rpmbuild -ta $(distdir).tar.xz)
-
-dist-hook: gen-AUTHORS
-
-# Generate the AUTHORS file (with all entries since the switch to git)
-# and insert it into the directory we're about to use to create a tarball.
-.PHONY: gen-AUTHORS
-gen-AUTHORS:
- $(AM_V_GEN)\
- if test -d $(srcdir)/.git; then \
- ( \
- cd $(srcdir) && \
- git log --pretty=format:' %aN <%aE>' | sort -u \
- ) > all.list && \
- sort -u $(srcdir)/AUTHORS.in > maint.list && \
- comm -23 all.list maint.list > contrib.list && \
- contrib="`cat contrib.list`" && \
- perl -p -e "s/#contributorslist#// and print '$$contrib'" \
- < $(srcdir)/AUTHORS.in > $(distdir)/AUTHORS-tmp && \
- mv -f $(distdir)/AUTHORS-tmp $(distdir)/AUTHORS && \
- rm -f all.list maint.list contrib.list; \
- fi
-
-# E501: (line too long) warning is ignored.
-.PHONY: flake8
-flake8:
- $(FLAKE8) --show-source --ignore=E501 $(srcdir)
-
-syntax-check: flake8
diff --git a/README.md b/README.md
index 66aa6f6..e365650 100644
--- a/README.md
+++ b/README.md
@@ -32,21 +32,19 @@ The packages required to build libvirt-dbus are
Installation
------------
-libvirt-dbus uses GNU Autotools build system, so the build & install
+libvirt-dbus uses Meson build system, so the build & install
process is fairly simple. For example, to install as root user:
```
-# ./configure --prefix=/usr --sysconfigdir=/etc --localstatedir=/var
-# make
-# make install
+# meson build --prefix=/usr --sysconfigdir=/etc --localstatedir=/var
+# ninja -C build install
```
or to install as unprivileged user:
```
-$ ./configure --prefix=$HOME/usr
-$ make
-$ make install
+$ meson build --prefix=$HOME/usr
+$ ninja -C build install
```
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index 6f29899..0000000
--- a/autogen.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-set -e
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-THEDIR=`pwd`
-cd $srcdir
-
-DIE=0
-
-for prog in autoreconf automake autoconf libtoolize
-do
- ($prog --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have $prog installed to compile libvirt-dbus."
- DIE=1
- }
-done
-
-if test "$DIE" -eq 1; then
- exit 1
-fi
-
-if test -z "$*"; then
- echo "I am going to run ./configure with no args - if you "
- echo "wish to pass any extra arguments to it, please specify them on "
- echo "the $0 command line."
-fi
-
-mkdir -p build-aux
-autoreconf -if
-
-cd $THEDIR
-
-if test "x$1" = "x--system"; then
- shift
- prefix=/usr
- libdir=$prefix/lib
- sysconfdir=/etc
- localstatedir=/var
- if [ -d /usr/lib64 ]; then
- libdir=$prefix/lib64
- fi
- EXTRA_ARGS="--prefix=$prefix --sysconfdir=$sysconfdir --localstatedir=$localstatedir --libdir=$libdir"
-fi
-
-$srcdir/configure $EXTRA_ARGS "$@" && {
- echo
- echo "Now type 'make' to compile libvirt-dbus."
-}
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index 24ebb26..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,87 +0,0 @@
-AC_INIT([libvirt-dbus], [1.4.0], [libvir-list(a)redhat.com] [], [https://libvirt.org]
-
-AC_CONFIG_SRCDIR([src/main.c])
-AC_CONFIG_AUX_DIR([build-aux])
-AC_CONFIG_HEADERS([config.h])
-AC_CONFIG_MACRO_DIR([m4])
-dnl Make automake keep quiet about wildcards & other GNUmake-isms
-AM_INIT_AUTOMAKE([foreign -Wno-portability -Wno-obsolete subdir-objects tar-pax no-dist-gzip dist-xz])
-AC_CANONICAL_HOST
-AC_USE_SYSTEM_EXTENSIONS
-
-AM_SILENT_RULES([yes])
-
-GLIB2_REQUIRED=2.44.0
-LIBVIRT_REQUIRED=3.0.0
-LIBVIRT_GLIB_REQUIRED=0.0.7
-AC_SUBST([GLIB2_REQUIRED]) dnl used in the .spec file
-AC_SUBST([LIBVIRT_REQUIRED]) dnl used in the .spec file
-AC_SUBST([LIBVIRT_GLIB_REQUIRED]) dnl used in the .spec file
-
-LIBVIRT_DBUS_MAJOR_VERSION=`echo $VERSION | awk -F. '{print $1}'`
-LIBVIRT_DBUS_MINOR_VERSION=`echo $VERSION | awk -F. '{print $2}'`
-LIBVIRT_DBUS_MICRO_VERSION=`echo $VERSION | awk -F. '{print $3}'`
-LIBVIRT_DBUS_VERSION=$LIBVIRT_DBUS_MAJOR_VERSION.$LIBVIRT_DBUS_MINOR_VERSION.$LIBVIRT_DBUS_MICRO_VERSION$LIBVIRT_DBUS_MICRO_VERSION_SUFFIX
-LIBVIRT_DBUS_VERSION_NUMBER=`expr $LIBVIRT_DBUS_MAJOR_VERSION \* 1000000 + $LIBVIRT_dbus_MINOR_VERSION \* 1000 + $LIBVIRT_DBUS_MICRO_VERSION`
-
-AC_SUBST([LIBVIRT_DBUS_MAJOR_VERSION])
-AC_SUBST([LIBVIRT_DBUS_MINOR_VERSION])
-AC_SUBST([LIBVIRT_DBUS_MICRO_VERSION])
-AC_SUBST([LIBVIRT_DBUS_VERSION])
-AC_SUBST([LIBVIRT_DBUS_VERSION_INFO])
-AC_SUBST([LIBVIRT_DBUS_VERSION_NUMBER])
-
-AC_PROG_CC
-AC_PROG_MKDIR_P
-AM_PROG_CC_C_O
-AC_PROG_CC_STDC
-AC_PROG_LIBTOOL
-AC_PATH_PROGS([FLAKE8], [flake8 flake8-3.6])
-
-PKG_CHECK_MODULES([GIO2], [gio-unix-2.0 >= $GLIB2_REQUIRED])
-PKG_CHECK_MODULES([GLIB2], [glib-2.0 >= $GLIB2_REQUIRED])
-PKG_CHECK_MODULES([LIBVIRT], [libvirt >= $LIBVIRT_REQUIRED])
-PKG_CHECK_MODULES([LIBVIRT_GLIB], [libvirt-glib-1.0 >= $LIBVIRT_GLIB_REQUIRED])
-
-LIBVIRT_COMPILE_WARNINGS
-LIBVIRT_LINKER_RELRO
-LIBVIRT_COMPILE_PIE
-
-LIBVIRT_ARG_WITH([DBUS_SERVICES], [where D-Bus session services direcotry is],
- ['$(datadir)/dbus-1/services'])
-DBUS_SERVICES_DIR="$with_dbus_services"
-AC_SUBST([DBUS_SERVICES_DIR])
-
-LIBVIRT_ARG_WITH([DBUS_SYSTEM_SERVICES], [where D-Bus system services directory is],
- ['$(datadir)/dbus-1/system-services'])
-DBUS_SYSTEM_SERVICES_DIR="$with_dbus_system_services"
-AC_SUBST([DBUS_SYSTEM_SERVICES_DIR])
-
-LIBVIRT_ARG_WITH([DBUS_SYSTEM_POLICIES], [where D-Bus system policies directory is],
- ['$(datadir)/dbus-1/system.d'])
-DBUS_SYSTEM_POLICIES_DIR="$with_dbus_system_policies"
-AC_SUBST([DBUS_SYSTEM_POLICIES_DIR])
-
-LIBVIRT_ARG_WITH([DBUS_INTERFACES], [where D-Bus interfaces directory is],
- ['$(datadir)/dbus-1/interfaces'])
-DBUS_INTERFACES_DIR="$with_dbus_interfaces"
-AC_SUBST([DBUS_INTERFACES_DIR])
-
-LIBVIRT_ARG_WITH([POLKIT_RULES], [directory for polkit rules],
- ['$(datadir)/polkit-1/rules.d'])
-POLKIT_RULES_DIR="$with_polkit_rules"
-AC_SUBST([POLKIT_RULES_DIR])
-
-LIBVIRT_ARG_WITH([SYSTEM_USER], [username to run system instance as],
- ['libvirtdbus'])
-SYSTEM_USER=$with_system_user
-AC_SUBST([SYSTEM_USER])
-
-AC_CONFIG_FILES([run],
- [chmod +x,-w run])
-AC_OUTPUT([Makefile
- data/Makefile
- docs/Makefile
- src/Makefile
- tests/Makefile
- libvirt-dbus.spec])
diff --git a/data/Makefile.am b/data/Makefile.am
deleted file mode 100644
index f8311bd..0000000
--- a/data/Makefile.am
+++ /dev/null
@@ -1,83 +0,0 @@
-service_in_files = \
- session/org.libvirt.service.in \
- $(NULL)
-servicedir = $(DBUS_SERVICES_DIR)
-service_DATA = \
- $(service_in_files:.service.in=.service) \
- $(NULL)
-
-system_service_in_files = \
- system/org.libvirt.service.in \
- $(NULL)
-system_servicedir = $(DBUS_SYSTEM_SERVICES_DIR)
-system_service_DATA = \
- $(system_service_in_files:.service.in=.service) \
- $(NULL)
-
-system_policy_in_files = \
- system/org.libvirt.conf.in \
- $(NULL)
-system_policydir = $(DBUS_SYSTEM_POLICIES_DIR)
-system_policy_DATA = \
- $(system_policy_in_files:.conf.in=.conf) \
- $(NULL)
-
-polkit_in_files = \
- system/libvirt-dbus.rules.in \
- $(NULL)
-polkitdir = $(POLKIT_RULES_DIR)
-polkit_DATA = \
- $(polkit_in_files:.rules.in=.rules) \
- $(NULL)
-
-interfaces_files = \
- org.libvirt.Connect.xml \
- org.libvirt.Domain.xml \
- org.libvirt.Interface.xml \
- org.libvirt.Network.xml \
- org.libvirt.NodeDevice.xml \
- org.libvirt.NWFilter.xml \
- org.libvirt.Secret.xml \
- org.libvirt.StoragePool.xml \
- org.libvirt.StorageVol.xml \
- $(NULL)
-interfacesdir = $(DBUS_INTERFACES_DIR)
-interfaces_DATA = \
- $(interfaces_files) \
- $(NULL)
-
-EXTRA_DIST = \
- $(service_in_files) \
- $(system_service_in_files) \
- $(system_policy_in_files) \
- $(polkit_in_files) \
- $(interfaces_files) \
- $(NULL)
-
-CLEANFILES = \
- $(service_DATA) \
- $(system_service_DATA) \
- $(system_policy_DATA) \
- $(polkit_DATA) \
- $(NULL)
-
-session/org.libvirt.service: session/org.libvirt.service.in
- $(AM_V_GEN)$(MKDIR_P) session && \
- sed -e 's|[@]sbindir[@]|$(sbindir)|g' < $< > $@-t && \
- mv $@-t $@
-
-system/org.libvirt.service: system/org.libvirt.service.in
- $(AM_V_GEN)$(MKDIR_P) system && \
- sed -e 's|[@]sbindir[@]|$(sbindir)|g' \
- -e 's|[@]SYSTEM_USER[@]|$(SYSTEM_USER)|' \
- < $< > $@-t && mv $@-t $@
-
-system/org.libvirt.conf: system/org.libvirt.conf.in
- $(AM_V_GEN)$(MKDIR_P) system && \
- sed -e 's|[@]SYSTEM_USER[@]|$(SYSTEM_USER)|' \
- < $< > $@-t && mv $@-t $@
-
-system/libvirt-dbus.rules: system/libvirt-dbus.rules.in
- $(AM_V_GEN)$(MKDIR_P) system && \
- sed -e 's|[@]SYSTEM_USER[@]|$(SYSTEM_USER)|' \
- < $< > $@-t && mv $@-t $@
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 0000000..42a6799
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,15 @@
+install_data(
+ 'org.libvirt.Connect.xml',
+ 'org.libvirt.Domain.xml',
+ 'org.libvirt.Interface.xml',
+ 'org.libvirt.Network.xml',
+ 'org.libvirt.NodeDevice.xml',
+ 'org.libvirt.NWFilter.xml',
+ 'org.libvirt.Secret.xml',
+ 'org.libvirt.StoragePool.xml',
+ 'org.libvirt.StorageVol.xml',
+ install_dir: dbus_interfaces_dir,
+)
+
+subdir('session')
+subdir('system')
diff --git a/data/session/meson.build b/data/session/meson.build
new file mode 100644
index 0000000..240fcef
--- /dev/null
+++ b/data/session/meson.build
@@ -0,0 +1,6 @@
+configure_file(
+ configuration: conf,
+ input: 'org.libvirt.service.in',
+ output: 'org.libvirt.service',
+ install_dir: dbus_services_dir,
+)
diff --git a/data/system/meson.build b/data/system/meson.build
new file mode 100644
index 0000000..74f1949
--- /dev/null
+++ b/data/system/meson.build
@@ -0,0 +1,18 @@
+configure_file(
+ configuration: conf,
+ input: 'org.libvirt.service.in',
+ output: 'org.libvirt.service',
+ install_dir: dbus_system_services_dir,
+)
+configure_file(
+ configuration: conf,
+ input: 'org.libvirt.conf.in',
+ output: 'org.libvirt.conf',
+ install_dir: dbus_system_policies_dir,
+)
+configure_file(
+ configuration: conf,
+ input: 'libvirt-dbus.rules.in',
+ output: 'libvirt-dbus.rules',
+ install_dir: polkit_rules_dir,
+)
diff --git a/docs/Makefile.am b/docs/Makefile.am
deleted file mode 100644
index fe8ca1c..0000000
--- a/docs/Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
-POD2MAN = pod2man -c "Virtualization Support" -r "$(PACKAGE)-$(VERSION)"
-
-PODFILES = \
- libvirt-dbus.pod \
- $(NULL)
-
-%.8: %.pod
- $(AM_V_GEN)$(POD2MAN) -s 8 $< $@ \
- && if grep 'POD ERROR' $@; then rm $@; exit 1; fi
-
-man8_MANS = \
- libvirt-dbus.8 \
- $(NULL)
-
-EXTRA_DIST = \
- $(PODFILES) \
- $(NULL)
-
-CLEANFILES = \
- $(man8_MANS) \
- $(NULL)
diff --git a/docs/meson.build b/docs/meson.build
new file mode 100644
index 0000000..e62e71a
--- /dev/null
+++ b/docs/meson.build
@@ -0,0 +1,8 @@
+prog_pod2man = find_program('pod2man')
+
+configure_file(
+ command: [prog_pod2man.path(), '-s 8', '@INPUT@', '@OUTPUT@'],
+ input: 'libvirt-dbus.pod',
+ output: 'libvirt-dbus.8',
+ install_dir: join_paths (get_option('mandir'), 'man8'),
+)
diff --git a/libvirt-dbus.spec.in b/libvirt-dbus.spec.in
index 626e2da..3425e9e 100644
--- a/libvirt-dbus.spec.in
+++ b/libvirt-dbus.spec.in
@@ -1,5 +1,6 @@
# -*- rpm-spec -*-
+%global meson_version @MESON_VERSION@
%global glib2_version @GLIB2_REQUIRED@
%global libvirt_version @LIBVIRT_REQUIRED@
%global libvirt_glib_version @LIBVIRT_GLIB_REQUIRED@
@@ -14,7 +15,7 @@ URL: https://libvirt.org/
Source0: https://libvirt.org/sources/dbus/%{name}-%{version}.tar.xz
BuildRequires: gcc
-BuildRequires: libtool
+BuildRequires: meson >= %{meson_version}
BuildRequires: glib2-devel >= %{glib2_version}
BuildRequires: libvirt-devel >= %{libvirt_version}
BuildRequires: libvirt-glib-devel >= %{libvirt_glib_version}
@@ -35,11 +36,11 @@ This package provides D-Bus API for libvirt
%autosetup
%build
-%configure
-%make_build
+%meson
+%meson_build
%install
-%make_install
+%meson_install
%pre
getent group %{system_user} >/dev/null || groupadd -r %{system_user}
diff --git a/m4/manywarnings.m4 b/m4/manywarnings.m4
deleted file mode 100644
index 0f06ade..0000000
--- a/m4/manywarnings.m4
+++ /dev/null
@@ -1,276 +0,0 @@
-# manywarnings.m4 serial 8
-dnl Copyright (C) 2008-2017 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Simon Josefsson
-
-# gl_MANYWARN_COMPLEMENT(OUTVAR, LISTVAR, REMOVEVAR)
-# --------------------------------------------------
-# Copy LISTVAR to OUTVAR except for the entries in REMOVEVAR.
-# Elements separated by whitespace. In set logic terms, the function
-# does OUTVAR = LISTVAR \ REMOVEVAR.
-AC_DEFUN([gl_MANYWARN_COMPLEMENT],
-[
- gl_warn_set=
- set x $2; shift
- for gl_warn_item
- do
- case " $3 " in
- *" $gl_warn_item "*)
- ;;
- *)
- gl_warn_set="$gl_warn_set $gl_warn_item"
- ;;
- esac
- done
- $1=$gl_warn_set
-])
-
-# gl_MANYWARN_ALL_GCC(VARIABLE)
-# -----------------------------
-# Add all documented GCC warning parameters to variable VARIABLE.
-# Note that you need to test them using gl_WARN_ADD if you want to
-# make sure your gcc understands it.
-AC_DEFUN([gl_MANYWARN_ALL_GCC],
-[
- dnl First, check for some issues that only occur when combining multiple
- dnl gcc warning categories.
- AC_REQUIRE([AC_PROG_CC])
- if test -n "$GCC"; then
-
- dnl Check if -W -Werror -Wno-missing-field-initializers is supported
- dnl with the current $CC $CFLAGS $CPPFLAGS.
- AC_MSG_CHECKING([whether -Wno-missing-field-initializers is supported])
- AC_CACHE_VAL([gl_cv_cc_nomfi_supported], [
- gl_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -W -Werror -Wno-missing-field-initializers"
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([[]], [[]])],
- [gl_cv_cc_nomfi_supported=yes],
- [gl_cv_cc_nomfi_supported=no])
- CFLAGS="$gl_save_CFLAGS"])
- AC_MSG_RESULT([$gl_cv_cc_nomfi_supported])
-
- if test "$gl_cv_cc_nomfi_supported" = yes; then
- dnl Now check whether -Wno-missing-field-initializers is needed
- dnl for the { 0, } construct.
- AC_MSG_CHECKING([whether -Wno-missing-field-initializers is needed])
- AC_CACHE_VAL([gl_cv_cc_nomfi_needed], [
- gl_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -W -Werror"
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[int f (void)
- {
- typedef struct { int a; int b; } s_t;
- s_t s1 = { 0, };
- return s1.b;
- }
- ]],
- [[]])],
- [gl_cv_cc_nomfi_needed=no],
- [gl_cv_cc_nomfi_needed=yes])
- CFLAGS="$gl_save_CFLAGS"
- ])
- AC_MSG_RESULT([$gl_cv_cc_nomfi_needed])
- fi
-
- dnl Next, check if -Werror -Wuninitialized is useful with the
- dnl user's choice of $CFLAGS; some versions of gcc warn that it
- dnl has no effect if -O is not also used
- AC_MSG_CHECKING([whether -Wuninitialized is supported])
- AC_CACHE_VAL([gl_cv_cc_uninitialized_supported], [
- gl_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -Werror -Wuninitialized"
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([[]], [[]])],
- [gl_cv_cc_uninitialized_supported=yes],
- [gl_cv_cc_uninitialized_supported=no])
- CFLAGS="$gl_save_CFLAGS"])
- AC_MSG_RESULT([$gl_cv_cc_uninitialized_supported])
-
- fi
-
- # List all gcc warning categories.
- # To compare this list to your installed GCC's, run this Bash command:
- #
- # comm -3 \
- # <(sed -n 's/^ *\(-[^ ]*\) .*/\1/p' manywarnings.m4 | sort) \
- # <(gcc --help=warnings | sed -n 's/^ \(-[^ ]*\) .*/\1/p' | sort |
- # grep -v -x -f <(
- # awk '/^[^#]/ {print $1}' ../build-aux/gcc-warning.spec))
-
- gl_manywarn_set=
- for gl_manywarn_item in \
- -fno-common \
- -W \
- -Wabi \
- -Waddress \
- -Waggressive-loop-optimizations \
- -Wall \
- -Wattributes \
- -Wbad-function-cast \
- -Wbool-compare \
- -Wbuiltin-macro-redefined \
- -Wcast-align \
- -Wchar-subscripts \
- -Wchkp \
- -Wclobbered \
- -Wcomment \
- -Wcomments \
- -Wcoverage-mismatch \
- -Wcpp \
- -Wdate-time \
- -Wdeprecated \
- -Wdeprecated-declarations \
- -Wdesignated-init \
- -Wdisabled-optimization \
- -Wdiscarded-array-qualifiers \
- -Wdiscarded-qualifiers \
- -Wdiv-by-zero \
- -Wdouble-promotion \
- -Wduplicated-cond \
- -Wempty-body \
- -Wendif-labels \
- -Wenum-compare \
- -Wextra \
- -Wformat-contains-nul \
- -Wformat-extra-args \
- -Wformat-nonliteral \
- -Wformat-security \
- -Wformat-signedness \
- -Wformat-y2k \
- -Wformat-zero-length \
- -Wframe-address \
- -Wfree-nonheap-object \
- -Whsa \
- -Wignored-attributes \
- -Wignored-qualifiers \
- -Wimplicit \
- -Wimplicit-function-declaration \
- -Wimplicit-int \
- -Wincompatible-pointer-types \
- -Winit-self \
- -Winline \
- -Wint-conversion \
- -Wint-to-pointer-cast \
- -Winvalid-memory-model \
- -Winvalid-pch \
- -Wjump-misses-init \
- -Wlogical-not-parentheses \
- -Wlogical-op \
- -Wmain \
- -Wmaybe-uninitialized \
- -Wmemset-transposed-args \
- -Wmisleading-indentation \
- -Wmissing-braces \
- -Wmissing-declarations \
- -Wmissing-field-initializers \
- -Wmissing-include-dirs \
- -Wmissing-parameter-type \
- -Wmissing-prototypes \
- -Wmultichar \
- -Wnarrowing \
- -Wnested-externs \
- -Wnonnull \
- -Wnonnull-compare \
- -Wnull-dereference \
- -Wodr \
- -Wold-style-declaration \
- -Wold-style-definition \
- -Wopenmp-simd \
- -Woverflow \
- -Woverlength-strings \
- -Woverride-init \
- -Wpacked \
- -Wpacked-bitfield-compat \
- -Wparentheses \
- -Wpointer-arith \
- -Wpointer-sign \
- -Wpointer-to-int-cast \
- -Wpragmas \
- -Wreturn-local-addr \
- -Wreturn-type \
- -Wscalar-storage-order \
- -Wsequence-point \
- -Wshadow \
- -Wshift-count-negative \
- -Wshift-count-overflow \
- -Wshift-negative-value \
- -Wsizeof-array-argument \
- -Wsizeof-pointer-memaccess \
- -Wstack-protector \
- -Wstrict-aliasing \
- -Wstrict-overflow \
- -Wstrict-prototypes \
- -Wsuggest-attribute=const \
- -Wsuggest-attribute=format \
- -Wsuggest-attribute=noreturn \
- -Wsuggest-attribute=pure \
- -Wsuggest-final-methods \
- -Wsuggest-final-types \
- -Wswitch \
- -Wswitch-bool \
- -Wswitch-default \
- -Wsync-nand \
- -Wsystem-headers \
- -Wtautological-compare \
- -Wtrampolines \
- -Wtrigraphs \
- -Wtype-limits \
- -Wuninitialized \
- -Wunknown-pragmas \
- -Wunsafe-loop-optimizations \
- -Wunused \
- -Wunused-but-set-parameter \
- -Wunused-but-set-variable \
- -Wunused-function \
- -Wunused-label \
- -Wunused-local-typedefs \
- -Wunused-macros \
- -Wunused-parameter \
- -Wunused-result \
- -Wunused-value \
- -Wunused-variable \
- -Wvarargs \
- -Wvariadic-macros \
- -Wvector-operation-performance \
- -Wvla \
- -Wvolatile-register-var \
- -Wwrite-strings \
- \
- ; do
- gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
- done
-
- # gcc --help=warnings outputs an unusual form for these options; list
- # them here so that the above 'comm' command doesn't report a false match.
- gl_manywarn_set="$gl_manywarn_set -Warray-bounds=2"
- gl_manywarn_set="$gl_manywarn_set -Wnormalized=nfc"
- gl_manywarn_set="$gl_manywarn_set -Wshift-overflow=2"
- gl_manywarn_set="$gl_manywarn_set -Wunused-const-variable=2"
-
- # These are needed for older GCC versions.
- if test -n "$GCC"; then
- case `($CC --version) 2>/dev/null` in
- 'gcc (GCC) '[[0-3]].* | \
- 'gcc (GCC) '4.[[0-7]].*)
- gl_manywarn_set="$gl_manywarn_set -fdiagnostics-show-option"
- gl_manywarn_set="$gl_manywarn_set -funit-at-a-time"
- ;;
- esac
- fi
-
- # Disable specific options as needed.
- if test "$gl_cv_cc_nomfi_needed" = yes; then
- gl_manywarn_set="$gl_manywarn_set -Wno-missing-field-initializers"
- fi
-
- if test "$gl_cv_cc_uninitialized_supported" = no; then
- gl_manywarn_set="$gl_manywarn_set -Wno-uninitialized"
- fi
-
- $1=$gl_manywarn_set
-])
diff --git a/m4/virt-arg.m4 b/m4/virt-arg.m4
deleted file mode 100644
index d626d72..0000000
--- a/m4/virt-arg.m4
+++ /dev/null
@@ -1,154 +0,0 @@
-dnl
-dnl virt-arg.m4: Helper macros for adding configure arguments
-dnl
-dnl Copyright (C) 2012-2014 Red Hat, Inc.
-dnl
-dnl This library is free software; you can redistribute it and/or
-dnl modify it under the terms of the GNU Lesser General Public
-dnl License as published by the Free Software Foundation; either
-dnl version 2.1 of the License, or (at your option) any later version.
-dnl
-dnl This library is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-dnl Lesser General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU Lesser General Public
-dnl License along with this library. If not, see
-dnl <http://www.gnu.org/licenses/>.
-dnl
-
-
-dnl
-dnl To be used instead of AC_ARG_WITH
-dnl
-dnl See LIBVIRT_ARG_WITH_FEATURE if the argument you're adding is going to
-dnl be used for switching a feature on and off.
-dnl
-dnl LIBVIRT_ARG_WITH([CHECK_NAME], [HELP_DESC], [DEFAULT_ACTION])
-dnl
-dnl CHECK_NAME: Suffix/prefix used for variables/flags, in uppercase.
-dnl HELP_DESC: Description that will appear in configure --help
-dnl DEFAULT_ACTION: Default configure action
-dnl
-dnl LIBVIRT_ARG_WITH([PACKAGER], [Extra packager name], [no])
-dnl LIBVIRT_ARG_WITH([HTML_DIR], [path to base html directory], [$(datadir)/doc])
-dnl
-AC_DEFUN([LIBVIRT_ARG_WITH], [
- m4_pushdef([check_name], [$1])
- m4_pushdef([help_desc], [[$2]])
- m4_pushdef([default_action], [$3])
-
- m4_pushdef([check_name_lc], m4_tolower(check_name))
- m4_pushdef([check_name_dash], m4_translit(check_name_lc, [_], [-]))
-
- m4_pushdef([arg_var], [with-]check_name_dash)
- m4_pushdef([with_var], [with_]check_name_lc)
-
- m4_divert_text([DEFAULTS], [with_var][[=]][default_action])
- AC_ARG_WITH([check_name_lc],
- [AS_HELP_STRING([[--]arg_var],
- ]m4_dquote(help_desc)[[ @<:@default=]]m4_dquote(default_action)[[@:>@])])
-
- m4_popdef([with_var])
- m4_popdef([arg_var])
-
- m4_popdef([check_name_dash])
- m4_popdef([check_name_lc])
-
- m4_popdef([default_action])
- m4_popdef([help_desc])
- m4_popdef([check_name])
-])
-
-dnl
-dnl To be used instead of AC_ARG_WITH
-dnl
-dnl The difference between LIBVIRT_ARG_WITH and this macro is that the former
-dnl is mostly an enhanced drop-in replacement for AC_ARG_WITH, whereas the
-dnl latter is tailored for adding an argument that is going to be used to
-dnl switch a feature on and off: as a consequence, it optionally supports
-dnl specifying the minimum version for libraries the feature depends on and
-dnl automatically builds a suitable description from the feature name.
-dnl
-dnl LIBVIRT_ARG_WITH_FEATURE([CHECK_NAME], [HELP_NAME], [DEFAULT_ACTION], [MIN_VERSION])
-dnl
-dnl CHECK_NAME: Suffix/prefix used for variables/flags, in uppercase.
-dnl HELP_NAME: Name that will appear in configure --help
-dnl DEFAULT_ACTION: Default configure action
-dnl MIN_VERSION: Specify minimal version that will be added to
-dnl configure --help (optional)
-dnl
-dnl LIBVIRT_ARG_WITH_FEATURE([SELINUX], [SeLinux], [check])
-dnl LIBVIRT_ARG_WITH_FEATURE([GLUSTERFS], [glusterfs], [check], [3.4.1])
-dnl
-AC_DEFUN([LIBVIRT_ARG_WITH_FEATURE], [
- m4_pushdef([check_name], [$1])
- m4_pushdef([help_name], [[$2]])
- m4_pushdef([default_action], [$3])
- m4_pushdef([min_version], [$4])
-
- m4_pushdef([check_name_lc], m4_tolower(check_name))
- m4_pushdef([check_name_dash], m4_translit(check_name_lc, [_], [-]))
-
- m4_pushdef([arg_var], [with-]check_name_dash)
- m4_pushdef([with_var], [with_]check_name_lc)
-
- m4_pushdef([version_text], m4_ifnblank(min_version, [[ (>= ]]min_version[[)]]))
-
- m4_divert_text([DEFAULTS], [with_var][[=]][default_action])
- AC_ARG_WITH([check_name_lc],
- [AS_HELP_STRING([[--]arg_var],
- [with ]]m4_dquote(help_name)m4_dquote(version_text)[[ support @<:@default=]]m4_dquote(default_action)[[@:>@])])
-
- m4_popdef([version_text])
-
- m4_popdef([with_var])
- m4_popdef([arg_var])
-
- m4_popdef([check_name_dash])
- m4_popdef([check_name_lc])
-
- m4_popdef([min_version])
- m4_popdef([default_action])
- m4_popdef([help_name])
- m4_popdef([check_name])
-])
-
-dnl
-dnl To be used instead of AC_ARG_ENABLE
-dnl
-dnl LIBVIRT_ARG_ENABLE([CHECK_NAME], [HELP_DESC], [DEFAULT_ACTION])
-dnl
-dnl CHECK_NAME: Suffix/prefix used for variables/flags, in uppercase.
-dnl HELP_DESC: Description that will appear in configure --help
-dnl DEFAULT_ACTION: Default configure action
-dnl
-dnl LIBVIRT_ARG_ENABLE([DEBUG], [enable debugging output], [yes])
-dnl
-AC_DEFUN([LIBVIRT_ARG_ENABLE], [
- m4_pushdef([check_name], [$1])
- m4_pushdef([help_desc], [[$2]])
- m4_pushdef([default_action], [$3])
-
- m4_pushdef([check_name_lc], m4_tolower(check_name))
- m4_pushdef([check_name_dash], m4_translit(check_name_lc, [_], [-]))
-
- m4_pushdef([arg_var], [enable-]check_name_dash)
- m4_pushdef([enable_var], [enable_]check_name_lc)
-
- m4_divert_text([DEFAULTS], [enable_var][[=]][default_action])
- AC_ARG_ENABLE([check_name_lc],
- [AS_HELP_STRING([[--]arg_var],
- ]m4_dquote(help_desc)[[ @<:@default=]]m4_dquote(default_action)[[@:>@])])
-
- m4_popdef([enable_var])
- m4_popdef([arg_var])
-
- m4_popdef([check_name_dash])
- m4_popdef([check_name_lc])
-
- m4_popdef([default_action])
- m4_popdef([help_desc])
- m4_popdef([check_name])
-])
diff --git a/m4/virt-compile-pie.m4 b/m4/virt-compile-pie.m4
deleted file mode 100644
index a2df38e..0000000
--- a/m4/virt-compile-pie.m4
+++ /dev/null
@@ -1,35 +0,0 @@
-dnl
-dnl Check for support for position independent executables
-dnl
-dnl Copyright (C) 2013 Red Hat, Inc.
-dnl
-dnl This library is free software; you can redistribute it and/or
-dnl modify it under the terms of the GNU Lesser General Public
-dnl License as published by the Free Software Foundation; either
-dnl version 2.1 of the License, or (at your option) any later version.
-dnl
-dnl This library is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-dnl Lesser General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU Lesser General Public
-dnl License along with this library. If not, see
-dnl <http://www.gnu.org/licenses/>.
-dnl
-
-AC_DEFUN([LIBVIRT_COMPILE_PIE],[
- PIE_CFLAGS=
- PIE_LDFLAGS=
- case "$host" in
- *-*-mingw* | *-*-msvc* | *-*-cygwin* )
- ;; dnl All code is position independent on Win32 target
- *)
- gl_COMPILER_OPTION_IF([-fPIE -DPIE -pie], [
- PIE_CFLAGS="-fPIE -DPIE"
- PIE_LDFLAGS="-pie"
- ])
- esac
- AC_SUBST([PIE_CFLAGS])
- AC_SUBST([PIE_LDFLAGS])
-])
diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4
deleted file mode 100644
index 6ece136..0000000
--- a/m4/virt-compile-warnings.m4
+++ /dev/null
@@ -1,203 +0,0 @@
-dnl
-dnl Enable all known GCC compiler warnings, except for those
-dnl we can't yet cope with
-dnl
-AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
- dnl ******************************
- dnl More compiler warnings
- dnl ******************************
-
- LIBVIRT_ARG_ENABLE([WERROR], [Use -Werror (if supported)], [check])
- if test "$enable_werror" = "check"; then
- if test -d $srcdir/.git; then
- is_git_version=true
- enable_werror=yes
- else
- enable_werror=no
- fi
- fi
-
- # List of warnings that are not relevant / wanted
-
- # Don't care about C++ compiler compat
- dontwarn="$dontwarn -Wc++-compat"
- dontwarn="$dontwarn -Wabi"
- dontwarn="$dontwarn -Wdeprecated"
- # Don't care about ancient C standard compat
- dontwarn="$dontwarn -Wtraditional"
- # Don't care about ancient C standard compat
- dontwarn="$dontwarn -Wtraditional-conversion"
- # Ignore warnings in /usr/include
- dontwarn="$dontwarn -Wsystem-headers"
- # Happy for compiler to add struct padding
- dontwarn="$dontwarn -Wpadded"
- # GCC very confused with -O2
- dontwarn="$dontwarn -Wunreachable-code"
- # Too many to deal with
- dontwarn="$dontwarn -Wconversion"
- # Too many to deal with
- dontwarn="$dontwarn -Wsign-conversion"
- # We need to use long long in many places
- dontwarn="$dontwarn -Wlong-long"
- # We allow manual list of all enum cases without default:
- dontwarn="$dontwarn -Wswitch-default"
- # We allow optional default: instead of listing all enum values
- dontwarn="$dontwarn -Wswitch-enum"
- # Not a problem since we don't use -fstrict-overflow
- dontwarn="$dontwarn -Wstrict-overflow"
- # Not a problem since we don't use -funsafe-loop-optimizations
- dontwarn="$dontwarn -Wunsafe-loop-optimizations"
- # gcc 4.4.6 complains this is C++ only; gcc 4.7.0 implies this from -Wall
- dontwarn="$dontwarn -Wenum-compare"
- # gcc 5.1 -Wformat-signedness mishandles enums, not ready for prime time
- dontwarn="$dontwarn -Wformat-signedness"
- # Several conditionals expand the same on both branches
- # depending on the particular platform/architecture
- dontwarn="$dontwarn -Wduplicated-branches"
- # > This warning does not generally indicate that there is anything wrong
- # > with your code; it merely indicates that GCC's optimizers are unable
- # > to handle the code effectively.
- # Source: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
- dontwarn="$dontwarn -Wdisabled-optimization"
-
- # gcc 4.2 treats attribute(format) as an implicit attribute(nonnull),
- # which triggers spurious warnings for our usage
- AC_CACHE_CHECK([whether the C compiler's -Wformat allows NULL strings],
- [lv_cv_gcc_wformat_null_works], [
- save_CFLAGS=$CFLAGS
- CFLAGS='-Wunknown-pragmas -Werror -Wformat'
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #include <stddef.h>
- static __attribute__ ((__format__ (__printf__, 1, 2))) int
- foo (const char *fmt, ...) { return !fmt; }
- ]], [[
- return foo(NULL);
- ]])],
- [lv_cv_gcc_wformat_null_works=yes],
- [lv_cv_gcc_wformat_null_works=no])
- CFLAGS=$save_CFLAGS])
-
- AC_CACHE_CHECK([whether gcc gives bogus warnings for -Wlogical-op],
- [lv_cv_gcc_wlogical_op_equal_expr_broken], [
- save_CFLAGS="$CFLAGS"
- CFLAGS="-O2 -Wlogical-op -Werror"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #define TEST1 1
- #define TEST2 TEST1
- ]], [[
- int test = 0;
- return test == TEST1 || test == TEST2;]])],
- [lv_cv_gcc_wlogical_op_equal_expr_broken=no],
- [lv_cv_gcc_wlogical_op_equal_expr_broken=yes])
- CFLAGS="$save_CFLAGS"])
-
- AC_CACHE_CHECK([whether clang gives bogus warnings for -Wdouble-promotion],
- [lv_cv_clang_double_promotion_broken], [
- save_CFLAGS="$CFLAGS"
- CFLAGS="-O2 -Wdouble-promotion -Werror"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #include <math.h>
- ]], [[
- float f = 0.0;
- return isnan(f);]])],
- [lv_cv_clang_double_promotion_broken=no],
- [lv_cv_clang_double_promotion_broken=yes])
- CFLAGS="$save_CFLAGS"])
-
- if test "$lv_cv_clang_double_promotion_broken" = "yes";
- then
- dontwarn="$dontwarn -Wdouble-promotion"
- fi
-
- # Get all possible GCC warnings
- gl_MANYWARN_ALL_GCC([maybewarn])
-
- # Remove the ones we don't want, blacklisted earlier
- gl_MANYWARN_COMPLEMENT([wantwarn], [$maybewarn], [$dontwarn])
-
- # GNULIB expects this to be part of -Wc++-compat, but we turn
- # that one off, so we need to manually enable this again
- wantwarn="$wantwarn -Wjump-misses-init"
-
- # -Wformat enables this by default, and we should keep it,
- # but need to rewrite various areas of code first
- wantwarn="$wantwarn -Wno-format-truncation"
-
- # This should be < 256 really. Currently we're down to 4096,
- # but using 1024 bytes sized buffers (mostly for virStrerror)
- # stops us from going down further
- gl_WARN_ADD([-Wframe-larger-than=4096], [STRICT_FRAME_LIMIT_CFLAGS])
- gl_WARN_ADD([-Wframe-larger-than=25600], [RELAXED_FRAME_LIMIT_CFLAGS])
-
- # Extra special flags
- dnl -fstack-protector stuff passes gl_WARN_ADD with gcc
- dnl on Mingw32, but fails when actually used
- case $host in
- aarch64-*-*)
- dnl "error: -fstack-protector not supported for this target [-Werror]"
- ;;
- *-*-linux*)
- dnl Prefer -fstack-protector-strong if it's available.
- dnl There doesn't seem to be great overhead in adding
- dnl -fstack-protector-all instead of -fstack-protector.
- dnl
- dnl We also don't need ssp-buffer-size with -all or -strong,
- dnl since functions are protected regardless of buffer size.
- dnl wantwarn="$wantwarn --param=ssp-buffer-size=4"
- wantwarn="$wantwarn -fstack-protector-strong"
- ;;
- *-*-freebsd*)
- dnl FreeBSD ships old gcc 4.2.1 which doesn't handle
- dnl -fstack-protector-all well
- wantwarn="$wantwarn -fstack-protector"
-
- wantwarn="$wantwarn -Wno-unused-command-line-argument"
- ;;
- esac
- wantwarn="$wantwarn -fexceptions"
- wantwarn="$wantwarn -fasynchronous-unwind-tables"
-
- # Need -fipa-pure-const in order to make -Wsuggest-attribute=pure
- # fire even without -O.
- wantwarn="$wantwarn -fipa-pure-const"
- # We do "bad" function cast to define glib auto cleanup functions
- wantwarn="$wantwarn -Wno-cast-function-type"
-
- if test "$enable_werror" = "yes"
- then
- wantwarn="$wantwarn -Werror"
- fi
-
- # Check for $CC support of each warning
- for w in $wantwarn; do
- gl_WARN_ADD([$w])
- done
-
- case $host in
- *-*-linux*)
- dnl Fall back to -fstack-protector-all if -strong is not available
- case $WARN_CFLAGS in
- *-fstack-protector-strong*)
- ;;
- *)
- gl_WARN_ADD([-fstack-protector-all])
- ;;
- esac
- ;;
- esac
-
- case $WARN_CFLAGS in
- *-Wsuggest-attribute=format*)
- AC_DEFINE([HAVE_SUGGEST_ATTRIBUTE_FORMAT], [1], [Whether -Wsuggest-attribute=format works])
- ;;
- esac
-
- # Silence certain warnings in gnulib, and use improved glibc headers
- AH_VERBATIM([FORTIFY_SOURCE],
- [/* Enable compile-time and run-time bounds-checking, and some warnings,
- without upsetting newer glibc. */
- #if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
- # define _FORTIFY_SOURCE 2
- #endif
- ])
-])
diff --git a/m4/virt-linker-relro.m4 b/m4/virt-linker-relro.m4
deleted file mode 100644
index 7669b23..0000000
--- a/m4/virt-linker-relro.m4
+++ /dev/null
@@ -1,35 +0,0 @@
-dnl
-dnl Check for -z now and -z relro linker flags
-dnl
-dnl Copyright (C) 2013 Red Hat, Inc.
-dnl
-dnl This library is free software; you can redistribute it and/or
-dnl modify it under the terms of the GNU Lesser General Public
-dnl License as published by the Free Software Foundation; either
-dnl version 2.1 of the License, or (at your option) any later version.
-dnl
-dnl This library is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-dnl Lesser General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU Lesser General Public
-dnl License along with this library. If not, see
-dnl <http://www.gnu.org/licenses/>.
-dnl
-
-AC_DEFUN([LIBVIRT_LINKER_RELRO],[
- AC_MSG_CHECKING([for how to force completely read-only GOT table])
-
- RELRO_LDFLAGS=
- ld_help=`ld --help 2>&1`
- case $ld_help in
- *"-z relro"*) RELRO_LDFLAGS="-Wl,-z -Wl,relro" ;;
- esac
- case $ld_help in
- *"-z now"*) RELRO_LDFLAGS="$RELRO_LDFLAGS -Wl,-z -Wl,now" ;;
- esac
- AC_SUBST([RELRO_LDFLAGS])
-
- AC_MSG_RESULT([$RELRO_LDFLAGS])
-])
diff --git a/m4/warnings.m4 b/m4/warnings.m4
deleted file mode 100644
index e697174..0000000
--- a/m4/warnings.m4
+++ /dev/null
@@ -1,79 +0,0 @@
-# warnings.m4 serial 11
-dnl Copyright (C) 2008-2017 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Simon Josefsson
-
-# gl_AS_VAR_APPEND(VAR, VALUE)
-# ----------------------------
-# Provide the functionality of AS_VAR_APPEND if Autoconf does not have it.
-m4_ifdef([AS_VAR_APPEND],
-[m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])],
-[m4_define([gl_AS_VAR_APPEND],
-[AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])])
-
-
-# gl_COMPILER_OPTION_IF(OPTION, [IF-SUPPORTED], [IF-NOT-SUPPORTED],
-# [PROGRAM = AC_LANG_PROGRAM()])
-# -----------------------------------------------------------------
-# Check if the compiler supports OPTION when compiling PROGRAM.
-#
-# FIXME: gl_Warn must be used unquoted until we can assume Autoconf
-# 2.64 or newer.
-AC_DEFUN([gl_COMPILER_OPTION_IF],
-[AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_[]_AC_LANG_ABBREV[]_$1])dnl
-AS_VAR_PUSHDEF([gl_Flags], [_AC_LANG_PREFIX[]FLAGS])dnl
-AS_LITERAL_IF([$1],
- [m4_pushdef([gl_Positive], m4_bpatsubst([$1], [^-Wno-], [-W]))],
- [gl_positive="$1"
-case $gl_positive in
- -Wno-*) gl_positive=-W`expr "X$gl_positive" : 'X-Wno-\(.*\)'` ;;
-esac
-m4_pushdef([gl_Positive], [$gl_positive])])dnl
-AC_CACHE_CHECK([whether _AC_LANG compiler handles $1], m4_defn([gl_Warn]), [
- gl_save_compiler_FLAGS="$gl_Flags"
- gl_AS_VAR_APPEND(m4_defn([gl_Flags]),
- [" $gl_unknown_warnings_are_errors ]m4_defn([gl_Positive])["])
- AC_LINK_IFELSE([m4_default([$4], [AC_LANG_PROGRAM([])])],
- [AS_VAR_SET(gl_Warn, [yes])],
- [AS_VAR_SET(gl_Warn, [no])])
- gl_Flags="$gl_save_compiler_FLAGS"
-])
-AS_VAR_IF(gl_Warn, [yes], [$2], [$3])
-m4_popdef([gl_Positive])dnl
-AS_VAR_POPDEF([gl_Flags])dnl
-AS_VAR_POPDEF([gl_Warn])dnl
-])
-
-# gl_UNKNOWN_WARNINGS_ARE_ERRORS
-# ------------------------------
-# Clang doesn't complain about unknown warning options unless one also
-# specifies -Wunknown-warning-option -Werror. Detect this.
-AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS],
-[gl_COMPILER_OPTION_IF([-Werror -Wunknown-warning-option],
- [gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'],
- [gl_unknown_warnings_are_errors=])])
-
-# gl_WARN_ADD(OPTION, [VARIABLE = WARN_CFLAGS],
-# [PROGRAM = AC_LANG_PROGRAM()])
-# ---------------------------------------------
-# Adds parameter to WARN_CFLAGS if the compiler supports it when
-# compiling PROGRAM. For example, gl_WARN_ADD([-Wparentheses]).
-#
-# If VARIABLE is a variable name, AC_SUBST it.
-AC_DEFUN([gl_WARN_ADD],
-[AC_REQUIRE([gl_UNKNOWN_WARNINGS_ARE_ERRORS])
-gl_COMPILER_OPTION_IF([$1],
- [gl_AS_VAR_APPEND(m4_if([$2], [], [[WARN_CFLAGS]], [[$2]]), [" $1"])],
- [],
- [$3])
-m4_ifval([$2],
- [AS_LITERAL_IF([$2], [AC_SUBST([$2])])],
- [AC_SUBST([WARN_CFLAGS])])dnl
-])
-
-# Local Variables:
-# mode: autoconf
-# End:
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..30eeebe
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,279 @@
+project(
+ 'libvirt-dbus', 'c',
+ version: '1.4.0',
+ license: 'LGPLv2+',
+ meson_version: '>= 0.49.0',
+ default_options: [
+ 'buildtype=debugoptimized',
+ 'c_std=gnu99',
+ ],
+)
+
+
+conf = configuration_data()
+conf.set('MESON_VERSION', '0.49.0')
+conf.set('PACKAGE', meson.project_name())
+conf.set('VERSION', meson.project_version())
+conf.set('build_root', meson.build_root())
+conf.set('sbindir', get_option('sbindir'))
+conf.set('source_root', meson.source_root())
+
+# Dependencies
+
+glib2_version = '2.44.0'
+libvirt_version = '3.0.0'
+libvirt_glib_version = '0.0.7'
+
+dep_gio_unix = dependency('gio-unix-2.0', version: '>=' + glib2_version)
+dep_glib = dependency('glib-2.0', version: '>=' + glib2_version)
+dep_libvirt = dependency('libvirt', version: '>=' + libvirt_version)
+dep_libvirt_glib = dependency('libvirt-glib-1.0', version: '>=' + libvirt_glib_version)
+
+conf.set('GLIB2_REQUIRED', glib2_version)
+conf.set('LIBVIRT_REQUIRED', libvirt_version)
+conf.set('LIBVIRT_GLIB_REQUIRED', libvirt_glib_version)
+
+git = run_command('test', '-d', '.git').returncode() == 0
+
+
+# Configure options
+
+conf.set('SYSTEM_USER', get_option('system_user'))
+
+opt_dirs = [
+ 'dbus_interfaces',
+ 'dbus_services',
+ 'dbus_system_services',
+ 'dbus_system_policies',
+ 'polkit_rules',
+]
+
+foreach opt_dir : opt_dirs
+ value = get_option(opt_dir)
+ varname = '@0@_dir'.format(opt_dir)
+ if opt_dir.startswith('/')
+ set_variable(varname, value)
+ else
+ set_variable(varname, join_paths(get_option('datadir'), value))
+ endif
+endforeach
+
+
+# Compile flags
+
+common_flags = [
+ '-DVIRT_DBUS_INTERFACES_DIR="@0@"'.format(dbus_interfaces_dir),
+]
+
+cc_flags = [
+ '-W',
+ '-Waddress',
+ '-Waggressive-loop-optimizations',
+ '-Wall',
+ '-Warray-bounds=2',
+ '-Wattributes',
+ '-Wbad-function-cast',
+ '-Wbool-compare',
+ '-Wbuiltin-macro-redefined',
+ '-Wcast-align',
+ '-Wchar-subscripts',
+ '-Wclobbered',
+ '-Wcomment',
+ '-Wcomments',
+ '-Wcoverage-mismatch',
+ '-Wcpp',
+ '-Wdate-time',
+ '-Wdeprecated-declarations',
+ '-Wdesignated-init',
+ '-Wdiscarded-array-qualifiers',
+ '-Wdiscarded-qualifiers',
+ '-Wdiv-by-zero',
+ '-Wdouble-promotion',
+ '-Wduplicated-cond',
+ '-Wempty-body',
+ '-Wendif-labels',
+ '-Wextra',
+ '-Wformat',
+ '-Wformat-contains-nul',
+ '-Wformat-extra-args',
+ '-Wformat-nonliteral',
+ '-Wformat-security',
+ '-Wformat-y2k',
+ '-Wformat-zero-length',
+ '-Wframe-address',
+ '-Wframe-larger-than=1024',
+ '-Wfree-nonheap-object',
+ '-Whsa',
+ '-Wignored-attributes',
+ '-Wignored-qualifiers',
+ '-Wimplicit',
+ '-Wimplicit-function-declaration',
+ '-Wimplicit-int',
+ '-Wincompatible-pointer-types',
+ '-Winit-self',
+ '-Winline',
+ '-Wint-conversion',
+ '-Wint-to-pointer-cast',
+ '-Winvalid-memory-model',
+ '-Winvalid-pch',
+ '-Wjump-misses-init',
+ '-Wlogical-not-parentheses',
+ '-Wlogical-op',
+ '-Wmain',
+ '-Wmaybe-uninitialized',
+ '-Wmemset-transposed-args',
+ '-Wmisleading-indentation',
+ '-Wmissing-braces',
+ '-Wmissing-declarations',
+ '-Wmissing-field-initializers',
+ '-Wmissing-include-dirs',
+ '-Wmissing-parameter-type',
+ '-Wmissing-prototypes',
+ '-Wmultichar',
+ '-Wnarrowing',
+ '-Wnested-externs',
+ '-Wno-cast-function-type',
+ '-Wnonnull',
+ '-Wnonnull-compare',
+ '-Wnormalized=nfc',
+ '-Wnull-dereference',
+ '-Wodr',
+ '-Wold-style-declaration',
+ '-Wold-style-definition',
+ '-Wopenmp-simd',
+ '-Woverflow',
+ '-Woverlength-strings',
+ '-Woverride-init',
+ '-Wpacked',
+ '-Wpacked-bitfield-compat',
+ '-Wparentheses',
+ '-Wpointer-arith',
+ '-Wpointer-sign',
+ '-Wpointer-to-int-cast',
+ '-Wpragmas',
+ '-Wreturn-local-addr',
+ '-Wreturn-type',
+ '-Wscalar-storage-order',
+ '-Wsequence-point',
+ '-Wshadow',
+ '-Wshift-count-negative',
+ '-Wshift-count-overflow',
+ '-Wshift-negative-value',
+ '-Wshift-overflow=2',
+ '-Wsizeof-array-argument',
+ '-Wsizeof-pointer-memaccess',
+ '-Wstack-protector',
+ '-Wstrict-aliasing',
+ '-Wstrict-prototypes',
+ '-Wsuggest-attribute=const',
+ '-Wsuggest-attribute=format',
+ '-Wsuggest-attribute=noreturn',
+ '-Wsuggest-attribute=pure',
+ '-Wsuggest-final-methods',
+ '-Wsuggest-final-types',
+ '-Wswitch',
+ '-Wswitch-bool',
+ '-Wsync-nand',
+ '-Wtautological-compare',
+ '-Wtrampolines',
+ '-Wtrigraphs',
+ '-Wtype-limits',
+ '-Wuninitialized',
+ '-Wunknown-pragmas',
+ '-Wunused',
+ '-Wunused-but-set-parameter',
+ '-Wunused-but-set-variable',
+ '-Wunused-const-variable=2',
+ '-Wunused-function',
+ '-Wunused-label',
+ '-Wunused-local-typedefs',
+ '-Wunused-macros',
+ '-Wunused-parameter',
+ '-Wunused-result',
+ '-Wunused-value',
+ '-Wunused-variable',
+ '-Wvarargs',
+ '-Wvariadic-macros',
+ '-Wvector-operation-performance',
+ '-Wvla',
+ '-Wvolatile-register-var',
+ '-Wwrite-strings',
+ '-fasynchronous-unwind-tables',
+ '-fexceptions',
+ '-fipa-pure-const',
+ '-fno-common',
+]
+ld_flags = [
+ '-Wl,-z,now',
+ '-Wl,-z,relro',
+]
+
+if git
+ cc_flags += ['-Werror']
+endif
+
+if host_machine.cpu_family() != 'aarch64'
+ if host_machine.system() == 'linux'
+ cc_flags += ['-fstack-protector-strong']
+ endif
+ if host_machine.system() == 'freebsd'
+ cc_flags += ['-fstack-protector']
+ endif
+endif
+
+if host_machine.system() not in ['cygwin', 'windows']
+ cc_flags += ['-fPIE', '-DPIE']
+ ld_flags += ['-pie']
+endif
+
+cc = meson.get_compiler('c')
+common_flags += cc.get_supported_arguments(cc_flags)
+link_flags = cc.get_supported_link_arguments(ld_flags)
+
+add_project_arguments(common_flags, language: 'c')
+add_project_link_arguments(link_flags, language: 'c')
+
+
+# Generate run helper
+
+configure_file(
+ input: 'run.in',
+ output: 'run',
+ configuration: conf,
+)
+run_command('tools/fix-perm.sh', 'a+x', 'run')
+
+
+# Generate dist files
+
+if git
+ configure_file(
+ input: 'libvirt-dbus.spec.in',
+ output: 'libvirt-dbus.spec',
+ configuration: conf,
+ )
+
+ authors = run_command('tools/gen-authors.sh')
+ configure_file(
+ configuration: { 'contributorslist': authors.stdout() },
+ input: 'AUTHORS.in',
+ output: 'AUTHORS',
+ )
+
+ foreach file : [ 'libvirt-dbus.spec', 'AUTHORS' ]
+ path = join_paths(meson.build_root(), file)
+ meson.add_dist_script(
+ 'sh',
+ '-c',
+ 'cp "@0@" "$MESON_DIST_ROOT/"'.format(path),
+ )
+ endforeach
+endif
+
+
+# Include sub-directories
+
+subdir('data')
+subdir('docs')
+subdir('src')
+subdir('tests')
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..36e8065
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,6 @@
+option('dbus_services', type: 'string', value: 'dbus-1/services', description: 'D-Bus session services directory')
+option('dbus_system_services', type: 'string', value: 'dbus-1/system-services', description: 'D-Bus system services directory')
+option('dbus_system_policies', type: 'string', value: 'dbus-1/system.d', description: 'D-Bus system policies directory')
+option('dbus_interfaces', type: 'string', value: 'dbus-1/interfaces', description: 'D-Bus interfaces directory')
+option('polkit_rules', type: 'string', value: 'polkit-1/rules.d', description: 'polkit rules directory')
+option('system_user', type: 'string', value: 'libvirtdbus', description: 'username to run system instance as')
diff --git a/run.in b/run.in
index 0744a80..1b2207e 100644
--- a/run.in
+++ b/run.in
@@ -14,7 +14,7 @@
# ./run gdb --args ./src/libvirt-dbus [args ...]
#
-export abs_top_builddir="@abs_top_builddir@"
-export VIRT_DBUS_INTERFACES_DIR="@abs_top_srcdir@/data"
+export abs_top_builddir="@build_root@"
+export VIRT_DBUS_INTERFACES_DIR="@source_root@/data"
exec "$@"
diff --git a/src/Makefile.am b/src/Makefile.am
deleted file mode 100644
index 845696e..0000000
--- a/src/Makefile.am
+++ /dev/null
@@ -1,66 +0,0 @@
-AM_CPPFLAGS = \
- -I$(top_srcdir)/src \
- -DVIRT_DBUS_INTERFACES_DIR=\"$(DBUS_INTERFACES_DIR)\" \
- $(NULL)
-AM_CFLAGS = \
- $(GIO2_CFLAGS) \
- $(GLIB2_CFLAGS) \
- $(LIBVIRT_CFLAGS) \
- $(LIBVIRT_GLIB_CFLAGS) \
- $(WARN_CFLAGS) \
- $(PIE_CFLAGS) \
- $(NULL)
-AM_LDFLAGS = \
- $(GIO2_LDFLAGS) \
- $(GLIB2_LDFLAGS) \
- $(LIBVIRT_LDFLAGS) \
- $(LIBVIRT_GLIB_LDFLAGS) \
- $(RELRO_LDFLAGS) \
- $(PIE_LDFLAGS) \
- $(NULL)
-
-noinst_LTLIBRARIES = \
- libutil.la \
- $(NULL)
-
-libutil_la_SOURCES = \
- util.c \
- util.h \
- $(NULL)
-
-sbin_PROGRAMS = \
- libvirt-dbus \
- $(NULL)
-
-libvirt_dbus_SOURCES = \
- connect.c \
- connect.h \
- domain.c \
- domain.h \
- events.c \
- events.h \
- gdbus.c \
- gdbus.h \
- interface.c \
- interface.h \
- main.c \
- network.c \
- network.h \
- nodedev.c \
- nodedev.h \
- nwfilter.c \
- nwfilter.h \
- secret.c \
- secret.h \
- storagepool.c \
- storagepool.h \
- storagevol.c \
- storagevol.h \
- $(NULL)
-libvirt_dbus_LDADD = \
- libutil.la \
- $(GIO2_LIBS) \
- $(GLIB2_LIBS) \
- $(LIBVIRT_LIBS) \
- $(LIBVIRT_GLIB_LIBS) \
- $(NULL)
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 0000000..a848bcd
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,42 @@
+lib_util = static_library(
+ 'libutil',
+ [
+ 'util.c',
+ ],
+ dependencies: [
+ dep_gio_unix,
+ dep_glib,
+ dep_libvirt,
+ dep_libvirt_glib
+ ],
+)
+
+exe_libvirt_dbus = executable(
+ 'libvirt-dbus',
+ [
+ 'connect.c',
+ 'domain.c',
+ 'events.c',
+ 'gdbus.c',
+ 'interface.c',
+ 'main.c',
+ 'network.c',
+ 'nodedev.c',
+ 'nwfilter.c',
+ 'secret.c',
+ 'storagepool.c',
+ 'storagevol.c',
+ ],
+ dependencies: [
+ dep_gio_unix,
+ dep_glib,
+ dep_libvirt,
+ dep_libvirt_glib
+ ],
+ link_with: [
+ lib_util,
+ ],
+ install: true,
+ install_dir: get_option('sbindir'),
+)
+
diff --git a/tests/Makefile.am b/tests/Makefile.am
deleted file mode 100644
index cd1fbd7..0000000
--- a/tests/Makefile.am
+++ /dev/null
@@ -1,57 +0,0 @@
-AM_CPPFLAGS = \
- -I$(top_srcdir)/src \
- $(NULL)
-
-test_helpers = \
- xmldata.py \
- libvirttest.py \
- conftest.py \
- $(NULL)
-
-test_programs = \
- test_connect.py \
- test_domain.py \
- test_interface.py \
- test_network.py \
- test_nodedev.py \
- test_storage.py \
- $(NULL)
-
-check_PROGRAMS = \
- test_util \
- $(NULL)
-
-test_util_SOURCES = \
- test_util.c \
- $(NULL)
-test_util_CFLAGS = \
- $(GIO2_CFLAGS) \
- $(GLIB2_CFLAGS) \
- $(LIBVIRT_CFLAGS) \
- $(NULL)
-test_util_LDFLAGS = \
- $(GIO2_LDFLAGS) \
- $(GLIB2_LDFLAGS) \
- $(LIBVIRT_LDFLAGS) \
- $(NULL)
-test_util_LDADD = \
- $(top_builddir)/src/libutil.la \
- $(GIO2_LIBS) \
- $(GLIB2_LIBS) \
- $(LIBVIRT_LIBS) \
- $(NULL)
-
-EXTRA_DIST = \
- $(test_helpers) \
- $(test_programs) \
- travis-run \
- $(NULL)
-
-TESTS = \
- $(check_PROGRAMS) \
- $(test_programs) \
- $(NULL)
-
-AM_TESTS_ENVIRONMENT = \
- export abs_top_builddir="$(abs_top_builddir)"; \
- export VIRT_DBUS_INTERFACES_DIR="$(abs_top_srcdir)/data";
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 0000000..6617d4c
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,52 @@
+src_include = include_directories('../src')
+
+test_exec = executable(
+ 'test_util',
+ [
+ 'test_util.c',
+ ],
+ dependencies: [
+ dep_gio_unix,
+ dep_glib,
+ dep_libvirt,
+ dep_libvirt_glib
+ ],
+ link_with: [
+ lib_util,
+ ],
+ include_directories: src_include,
+)
+
+test('test_util', test_exec, suite: 'unit')
+
+python_tests = [
+ 'test_connect.py',
+ 'test_domain.py',
+ 'test_interface.py',
+ 'test_network.py',
+ 'test_nodedev.py',
+ 'test_storage.py',
+]
+
+python_env = [
+ 'abs_top_builddir=' + meson.build_root(),
+ 'VIRT_DBUS_INTERFACES_DIR=' + meson.source_root() + '/data'
+]
+
+foreach name : python_tests
+ prog = find_program(name)
+ test(name, prog, env: python_env, suite: 'unit')
+endforeach
+
+flake8 = find_program('flake8', 'flake8-3', required: false)
+if flake8.found()
+ test(
+ 'flake8', flake8,
+ args: [
+ '--show-source',
+ '--ignore=E501', # E501: (line too long) warning is ignored.
+ meson.source_root(),
+ ],
+ suite: 'syntax',
+ )
+endif
diff --git a/tools/fix-perm.sh b/tools/fix-perm.sh
new file mode 100755
index 0000000..ed444d4
--- /dev/null
+++ b/tools/fix-perm.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+chmod $1 $MESON_BUILD_ROOT/$2
diff --git a/tools/gen-authors.sh b/tools/gen-authors.sh
new file mode 100755
index 0000000..eb39215
--- /dev/null
+++ b/tools/gen-authors.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+cd $MESON_SOURCE_ROOT
+git log --pretty=format:' %aN <%aE>' | sort -u
--
2.21.0
5
16
[libvirt] [PATCH] docs: attempt to document the general libvirt dev strategy
by Daniel P. Berrangé 23 Sep '19
by Daniel P. Berrangé 23 Sep '19
23 Sep '19
There are various ideas / plans floating around for future libvirt work,
some of which is actively in progress. Historically we've never captured
this kind of information anywhere, except in mailing list discussions.
In particular guidelines in hacking.html.in don't appear until a policy
is actively applied.
This patch attempts to fill the documentation gap, by creating a new
"strategy" page which outlines the general vision for some notable
future changes. The key thing to note is that none of the stuff on this
page is guaranteed, plans may change as new information arises. IOW this
is a "best guess" as to the desired future.
This doc has focused on three areas, related to the topic of language
usage / consolidation
- Use of non-C languages for the library, daemons or helper tools
- Replacement of autotools with meson
- Use of RST and Sphinx for documentation (website + man pages)
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
docs/docs.html.in | 3 +
docs/strategy.html.in | 143 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 146 insertions(+)
create mode 100644 docs/strategy.html.in
diff --git a/docs/docs.html.in b/docs/docs.html.in
index c1741c89b4..6cf09f51bc 100644
--- a/docs/docs.html.in
+++ b/docs/docs.html.in
@@ -128,6 +128,9 @@
<dt><a href="hacking.html">Contributor guidelines</a></dt>
<dd>General hacking guidelines for contributors</dd>
+ <dt><a href="strategy.html">Project strategy</a></dt>
+ <dd>Sets a vision for future direction & technical choices</dd>
+
<dt><a href="bugs.html">Bug reports</a></dt>
<dd>How and where to report bugs and request features</dd>
diff --git a/docs/strategy.html.in b/docs/strategy.html.in
new file mode 100644
index 0000000000..41bbebb8f9
--- /dev/null
+++ b/docs/strategy.html.in
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <body>
+ <h1>Libvirt Project Strategy</h1>
+
+ <p>
+ This document attempts to outline the libvirt project strategy for
+ the near future. Think of this is a high level vision or todo list
+ setting the direction for the project & its developers to take
+ </p>
+
+ <h2>Language consolidation</h2>
+
+ <p>
+ At time of writing libvirt uses the following languages
+ </p>
+
+ <dl>
+ <dt>C</dt>
+ <dd>The core libvirt library, daemons, and helper tools are all written
+ in the C language.</dd>
+ <dt>Python</dt>
+ <dd>Various supporting build/test scripts are written in Python, with
+ compatibility for Python 2 and 3.</dd>
+ <dt>Perl</dt>
+ <dd>Various supporting build/test scripts are written in Python. It is
+ also used for many syntax-check inline rules</dd>
+ <dt>Shell</dt>
+ <dd>The autoconf configure script, is essentially shell script. Shell
+ is also used for some simple build/test scripts. At runtime libvirt
+ avoids shell except when using SSH tunnels to a remote host</dd>
+ <dt>XSLT</dt>
+ <dd>The website documentation is subsituted into templates using XSLT
+ scripts. The API documentation is also autogenerated from an XML
+ description using XSLT</dd>
+ <dt>HTML</dt>
+ <dd>The website documentation is all written in plain HTML. Some HTML
+ is also auto-generated for API documentation</dd>
+ <dt>M4</dt>
+ <dd>The autoconf configure script uses a large number of M4 macros to
+ generate its content</dd>
+ <dt>make</dt>
+ <dd>The core build system uses the traditional GNU make recipes</dd>
+ <dt>automake</dt>
+ <dd>The make recipes make use of automake's make language extensions
+ which are then turned into regular make rules</dd>
+ <dt>awk/sed</dt>
+ <dd>A number of the syntax-check inline rules involve use of awk/sed
+ scripts</dd>
+ <dt>POD</dt>
+ <dd>The command line manual pages are typically written in Perl's POD
+ format, and converted to troff</dt>
+ </dl>
+
+ <p>
+ The wide range of languages used present a knowledge burden for
+ developers involved in libvirt, especially when there are multiple
+ languages all used in the same problem spaces. This is most notable
+ in the build system which uses a combination of shell, m4, make,
+ automake, awk, sed, perl and python, with debugging requiring
+ understanding of the interactions between many languages. The
+ relative popularity of the languages has implications for how easily
+ the project can attract new contributors, and the quality of the code
+ they'll be able to submit. This is most notable when comparing Perl
+ to Python, as since the start of the libvirt project, the popularity
+ and knowledge of Perl has declined, while Python has risen.
+ </p>
+ <p>
+ The C language has served libvirt well over the years, but its age shows
+ giving rise to limitations which negatively impact the project in terms
+ of code quality, reliability, and efficiency of development. Most notably
+ its lack of memory safety means that many code bugs become trivially
+ exploitable security flaws or denial of service. The lack of a high
+ level portable runtime, resulting in alot of effort being spent to
+ ensure cross platform portability. The modern languages Rust and Go
+ provide viable options for low level systems programming, in a way that
+ was not practical with other common languages such as Python and Java.
+ There is thus a desire to make use of either Rust or Go, or more likely
+ a combination of both, to incrementally replace existing use of C, and
+ also for greenfield development.
+ </p>
+ <p>
+ With this in mind the libvirt project has set a vision for language
+ usage in the future
+ </p>
+
+ <dl>
+ <dt>C</dt>
+ <dd>The core libvirt library, daemons, and helper tools are all written
+ in the C language.</dd>
+ <dt>Rust</dt>
+ <dd>Parts of the core libvirt library / daemon are to be able to leverage
+ Rust to replace C. (TBD vs Go)</dd>
+ <dt>Go</dt>
+ <dd>Parts of the core libvirt library / daemon are to be able to leverage
+ Rust to replace C. (TBD vs Rust). Helper tools are able to be written
+ in Go.</dd>
+ <dt>Meson</dt>
+ <dd>The core build system is to be written in meson.</dd>
+ <dt>Python</dt>
+ <dd>Various supporting build/test scripts are written in Python 3
+ compatible mode only.</dd>
+ <dt>RST</dt>
+ <dd>The website and command man pages are to be written in RST, using
+ Sphinx as the engine to convert to end user formats like HTML, troff,
+ etc</dd>
+ </dl>
+
+ <p>
+ Some notable points from the above. Whether the core library / daemons
+ will use Rust or Go internally is still to be decided based on more
+ detailed evaluation of their pros and cons, to identify the best fit,
+ as the need to link & embed this functionality in other processes has
+ complex interactions both at a technical and non-technical level. For
+ standalone helper tools, Go is a good fit for rapid development as
+ there are no concerns around interactions with other in-process code
+ from 3rd parties.
+ </p>
+
+ <p>
+ The meson build system is written in Python, at time of writing,
+ requiring version 3.4 or later. This directly informs the choice to use
+ Python 3.4 as the language for all supporting build scripts, re-inforcing
+ the other benefits of Python, over Perl, Shell, M4, automake, etc.
+ </p>
+
+ <p>
+ Using the RST format for documentation allows for the use of XSLT to be
+ eliminated from the build process. RST and the Sphinx toolkit are widely
+ used, as seen by the huge repository of content on
+ https://readthedocs.org/. The ability embed raw HTML in the RST docs will
+ greatly facilitate its adoption, avoiding the need for a big bang
+ conversion of existing content. Given the desire to eliminate Perl
+ usage, replacing the use of POD documentation for manual pages is an
+ obvious followup task. RST is the obvious choice to given alignment
+ with the website, allowing the man pages to be easily published online
+ with other docs. It is further anticipated that the current API docs
+ generator which uses XSLT to convert the XML API description would be
+ converted to something which generates RST using Python instead of XSL.
+ </p>
+ </body>
+</html>
--
2.21.0
4
5
[libvirt] [PATCH] docs: kbase: Add a section explaining how to verify SEV from the guest
by Erik Skultety 23 Sep '19
by Erik Skultety 23 Sep '19
23 Sep '19
Commit 50dfabbb59 forgot to add this important bit on how to check that
all the changes to the XML actually worked.
---
docs/kbase/launch_security_sev.html.in | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/docs/kbase/launch_security_sev.html.in b/docs/kbase/launch_security_sev.html.in
index 923bb52b25..4b8e06ccc1 100644
--- a/docs/kbase/launch_security_sev.html.in
+++ b/docs/kbase/launch_security_sev.html.in
@@ -349,6 +349,18 @@ EOF</pre>
...
</domain></pre>
+ <h2><a id="Guest">Checking SEV from within the guest</a></h2>
+ <p>
+ After making the necessary adjustments discussed in
+ <a href="#Configuration">Configuration</a>, the VM should now boot
+ successfully with SEV enabled. You can then verify that the guest
+ enabled with SEV by running:
+ </p>
+
+ <pre>
+# dmesg | grep -i sev
+AMD Secure Encrypted Virtualization (SEV) active</pre>
+
<h2><a id="Limitations">Limitations</a></h2>
<p>
Currently, the boot disk cannot be of type virtio-blk, instead, virtio-scsi
--
2.20.1
3
5
23 Sep '19
From: Marc-André Lureau <marcandre.lureau(a)redhat.com>
Hi,
This series adds support for running virtio GPUs in seperate
processes, thanks to vhost-user backend.
The QEMU support landed for 4.1. There are several benefits of running
the GPU/virgl in an external process, since Mesa is rather heavy on
the qemu main loop, and may block for a while, or crash.
The external GPU process is started with one end of a socket pair, the
other end is given to a QEMU chardev attached to a device. The
external process is also added to the cgroup to limit resources usage.
vhost-user is a generic mechanism that allows implementing virtio device
dataplane handling in a separate userspace process. vhost-user-gpu here
notably moves the virgl 3d handling out of the main qemu process. The
external process will be /usr/libexec/vhost-user-gpu, which comes from
qemu.git contrib/vhost-user-gpu code, first released in qemu-4.1.
Part of this series deals with discovering the location on disk of the
vhost-user-gpu binary, and what capabilities it provides. This uses a
similar mechanism to firmware.json, described in qemu
docs/interop/vhost-user.json
https://github.com/qemu/qemu/blob/master/docs/interop/vhost-user.json
qemu 4.1 ships a 50-qemu-gpu.json to match. I believe virtio-fs
will use a similar mechanism when it lands in upstream qemu, as
virtiofsd is a separate process that communicates with qemu over
vhost-user.
For a bit more background on vhost-user-gpu process handling and
the json interop motivation, here's some of the qemu discussion:
https://lists.nongnu.org/archive/html/qemu-devel/2018-08/msg02610.html
https://lists.nongnu.org/archive/html/qemu-devel/2018-09/msg00807.html
For this series, the XML to enable this is:
<video model='virtio'>
<driver name='vhostuser'/>
<acceleration accel3d='yes' rendernode='/path/to/rendernode'/>
</video>
rendernode is optional
qemu_vhost_user.c handles vhost-user.json
qemu_vhost_user_gpu.c handles the process management for
vhost-user-gpu
v4:
- rebased
- simplify vhost-user-gpu pidfile checking
- fix check/syntax-check
v3:
- rename qemu_configs -> qemu_interop_config
- replace <model .. vhostuser='yes'/> with <driver name='vhostuser'/>
- move vhost_user_binary to virDomainVideoDriverDef
- some VIR_AUTO usage improvements
- introduce qemuDomainVideoPrivate to store vhost-user fd
- improved selection of -device model
- use DO_TEST_CAPS_LATEST
- allocate a rendernode with virHostGetDRMRenderNode() - but no clear idea how to have a test
- add a patch to ignore EPERM in virDirOpenIfExists()
- better domain checks/validate
- added Ján r-b
- no s-o-b from Cole, per request and commits taken from his git branch
- rebase, indentation/style fixes, update doc, version..
v2:
- rebase to master
- if test file build by dropping LDADDS usage
- syntax-check issues:
* use #pragma once
* if () bracket issues
* jump label indent issues
* error message %s usage
* size_t for loops
Marc-André Lureau (20):
qemu: generalize qemuFetchConfigs
util: ignore EACCESS in virDirOpenIfExists
conf: format/parse/rng/docs for video <driver name='qemu|vhostuser'/>
domain: add rendernode attribute on <accel>
qemu-cgroup: allow accel rendernode access
qemu: add vhost-user-gpu capabilities checks
qemu: check that qemu is vhost-user-vga capable
qemu: validate virtio-gpu with vhost-user
qemu: restrict 'virgl=' option to non-vhostuser video type
qemu: add vhost-user helpers
qemu: add qemuSecurityStartVhostUserGPU helper
conf: add privateData to virDomainVideoDef
qemu: add qemuDomainVideoPrivate
qemu: add vhost-user-gpu helper unit
tests: mock execv/execve
tests: wrap vhost-user paths in qemuxml2argvtest
qemu: prepare domain for vhost-user GPU
qemu: start/stop the vhost-user-gpu external device
qemu: build vhost-user GPU devices
tests: add vhost-user-gpu xml2argv tests
docs/formatdomain.html.in | 18 +-
docs/schemas/domaincommon.rng | 13 +
src/conf/domain_conf.c | 87 +++-
src/conf/domain_conf.h | 21 +-
src/qemu/Makefile.inc.am | 6 +
src/qemu/qemu_capabilities.c | 6 +
src/qemu/qemu_capabilities.h | 4 +
src/qemu/qemu_cgroup.c | 24 +
src/qemu/qemu_command.c | 65 ++-
src/qemu/qemu_domain.c | 52 ++-
src/qemu/qemu_domain.h | 12 +
src/qemu/qemu_extdevice.c | 74 ++-
src/qemu/qemu_extdevice.h | 5 +
src/qemu/qemu_firmware.c | 144 +-----
src/qemu/qemu_interop_config.c | 183 ++++++++
src/qemu/qemu_interop_config.h | 25 ++
src/qemu/qemu_process.c | 61 ++-
src/qemu/qemu_security.c | 40 ++
src/qemu/qemu_security.h | 6 +
src/qemu/qemu_vhost_user.c | 422 ++++++++++++++++++
src/qemu/qemu_vhost_user.h | 48 ++
src/qemu/qemu_vhost_user_gpu.c | 276 ++++++++++++
src/qemu/qemu_vhost_user_gpu.h | 49 ++
src/util/virfile.c | 13 +-
tests/Makefile.am | 9 +
.../caps_4.1.0.x86_64.xml | 2 +
.../etc/qemu/vhost-user/40-gpu.json | 1 +
.../etc/qemu/vhost-user/50-gpu.json | 0
.../qemu/vhost-user/test-vhost-user-gpu | 11 +
.../usr/share/qemu/vhost-user/30-gpu.json | 1 +
.../usr/share/qemu/vhost-user/50-gpu.json | 8 +
.../usr/share/qemu/vhost-user/60-gpu.json | 1 +
tests/qemuvhostusertest.c | 132 ++++++
...host-user-gpu-secondary.x86_64-latest.args | 43 ++
.../vhost-user-gpu-secondary.xml | 46 ++
.../vhost-user-vga.x86_64-latest.args | 40 ++
tests/qemuxml2argvdata/vhost-user-vga.xml | 42 ++
tests/qemuxml2argvdata/virtio-options.args | 5 +-
tests/qemuxml2argvdata/virtio-options.xml | 4 +-
tests/qemuxml2argvtest.c | 16 +-
tests/virfilewrapper.c | 22 +
41 files changed, 1827 insertions(+), 210 deletions(-)
create mode 100644 src/qemu/qemu_interop_config.c
create mode 100644 src/qemu/qemu_interop_config.h
create mode 100644 src/qemu/qemu_vhost_user.c
create mode 100644 src/qemu/qemu_vhost_user.h
create mode 100644 src/qemu/qemu_vhost_user_gpu.c
create mode 100644 src/qemu/qemu_vhost_user_gpu.h
create mode 120000 tests/qemuvhostuserdata/etc/qemu/vhost-user/40-gpu.json
create mode 100644 tests/qemuvhostuserdata/etc/qemu/vhost-user/50-gpu.json
create mode 100755 tests/qemuvhostuserdata/usr/libexec/qemu/vhost-user/test-vhost-user-gpu
create mode 120000 tests/qemuvhostuserdata/usr/share/qemu/vhost-user/30-gpu.json
create mode 100644 tests/qemuvhostuserdata/usr/share/qemu/vhost-user/50-gpu.json
create mode 120000 tests/qemuvhostuserdata/usr/share/qemu/vhost-user/60-gpu.json
create mode 100644 tests/qemuvhostusertest.c
create mode 100644 tests/qemuxml2argvdata/vhost-user-gpu-secondary.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/vhost-user-gpu-secondary.xml
create mode 100644 tests/qemuxml2argvdata/vhost-user-vga.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/vhost-user-vga.xml
--
2.23.0
4
37
[libvirt] [PATCH] qemu: fix operation job association when qemuCaps is NULL.
by jcfaraccoďĽ gmail.com 23 Sep '19
by jcfaraccoďĽ gmail.com 23 Sep '19
23 Sep '19
From: Julio Faracco <jcfaracco(a)gmail.com>
Function qemuMigrationEatCookie() calls
qemuMigrationCookieXMLParseStr(), when qemuCaps is not set, function
assumes priv as a NULL pointer. At the end, function tries to set
job info operation to the same current job. But, if priv is NULL due to
missing qemuCaps, code returns a Null Pointer Exception. This commit
adds an extra check to verify it.
Signed-off-by: Julio Faracco <jcfaracco(a)gmail.com>
---
src/qemu/qemu_migration_cookie.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c
index 25d3fecd74..945b640e2c 100644
--- a/src/qemu/qemu_migration_cookie.c
+++ b/src/qemu/qemu_migration_cookie.c
@@ -1538,7 +1538,8 @@ qemuMigrationEatCookie(virQEMUDriverPtr driver,
}
}
- if (flags & QEMU_MIGRATION_COOKIE_STATS && mig->jobInfo)
+ if (flags & QEMU_MIGRATION_COOKIE_STATS && mig->jobInfo &&
+ priv && priv->job.current)
mig->jobInfo->operation = priv->job.current->operation;
return mig;
--
2.20.1
2
1
An example how configure looks like with these changes applied:
https://travis-ci.org/zippy2/libvirt/jobs/582549099#L4247
Michal PrĂvoznĂk (4):
configure: Prefer LIBVIRT_RESULT over AC_MSG_NOTICE
virt-result.m4: Align string more generously
configure: Colorize output
virt-result.m4: Colourize summary printings
configure.ac | 8 ++---
m4/virt-chrdev-lock-files.m4 | 2 +-
m4/virt-colours.m4 | 62 ++++++++++++++++++++++++++++++++++++
m4/virt-debug.m4 | 2 +-
m4/virt-default-editor.m4 | 2 +-
m4/virt-dtrace.m4 | 2 +-
m4/virt-host-validate.m4 | 2 +-
m4/virt-init-script.m4 | 2 +-
m4/virt-loader-nvram.m4 | 2 +-
m4/virt-login-shell.m4 | 2 +-
m4/virt-numad.m4 | 2 +-
m4/virt-result.m4 | 21 ++++++++++--
12 files changed, 93 insertions(+), 16 deletions(-)
create mode 100644 m4/virt-colours.m4
--
2.21.0
4
17
23 Sep '19
* pass same size to virStreamRecv as the buffer has allocated
* Handle -2 error case
* Fix FFI declaration to take size_t instead of c_uint
* Allow user to pass in buffer. To allow user to decide where to
allocate it. And to be able to re-use the same buffer
* Don't try to treat binary data as a string
Signed-off-by: Linus Färnstrand <faern(a)faern.net>
---
src/stream.rs | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/stream.rs b/src/stream.rs
index 8333ee5..af6c8ec 100644
--- a/src/stream.rs
+++ b/src/stream.rs
@@ -18,6 +18,7 @@
extern crate libc;
+use std::convert::TryFrom;
use std::str;
use error::Error;
@@ -37,7 +38,7 @@ extern "C" {
-> libc::c_int;
fn virStreamRecv(c: sys::virStreamPtr,
data: *mut libc::c_char,
- nbytes: libc::c_uint)
+ nbytes: libc::size_t)
-> libc::c_int;
fn virStreamFree(c: sys::virStreamPtr) -> libc::c_int;
fn virStreamAbort(c: sys::virStreamPtr) -> libc::c_int;
@@ -116,14 +117,14 @@ impl Stream {
}
}
- pub fn recv(&self, size: u32) -> Result<String, Error> {
- unsafe {
- let mut data: [libc::c_char; 2048] = ['\0' as i8; 2048];
- let ret = virStreamRecv(self.as_ptr(), data.as_mut_ptr(), size as libc::c_uint);
- if ret == -1 {
- return Err(Error::new());
- }
- return Ok(c_chars_to_string!(data.as_ptr()));
- }
+ pub fn recv(&self, buf: &mut [u8]) -> Result<usize, Error> {
+ let ret = unsafe {
+ virStreamRecv(
+ self.as_ptr(),
+ buf.as_mut_ptr() as *mut libc::c_char,
+ buf.len(),
+ )
+ };
+ usize::try_from(ret).map_err(|_| Error::new())
}
}
--
2.21.0
2
3
[libvirt] [PATCH 0/3] use VIR_AUTOFREE() with strings in qemu_hotplug.c
by Daniel Henrique Barboza 23 Sep '19
by Daniel Henrique Barboza 23 Sep '19
23 Sep '19
Similar work to [1], but this time someone already changed
the virQEMUDriverConfigPtr to use VIR_AUTOUNREF() in this
file, which is less work pending to do, which is good.
This change in particular will royally mess up with my
rebases, but it's for a good cause.
[1] https://www.redhat.com/archives/libvir-list/2019-September/msg00719.html
Daniel Henrique Barboza (3):
qemu_hotplug.c: use VIR_AUTOFREE() in strings 1/3
qemu_hotplug.c: use VIR_AUTOFREE() in strings 2/3
qemu_hotplug.c: use VIR_AUTOFREE() in strings 3/3
src/qemu/qemu_hotplug.c | 286 +++++++++++++---------------------------
1 file changed, 95 insertions(+), 191 deletions(-)
--
2.21.0
2
6