[PATCH 0/3] qemu_domain: Automagically add IOMMU if needed
by Michal Privoznik
*** BLURB HERE ***
Michal Prívozník (3):
libvirt_private.syms: Export virDomainIOMMUDefNew()
qemu: Turn EIM IOMMU on automagically
qemu_domain: Automagically add IOMMU if needed
src/libvirt_private.syms | 1 +
src/qemu/qemu_domain.c | 56 ++++++++++++++++++-
src/qemu/qemu_validate.c | 1 -
src/qemu/qemu_validate.h | 2 +
...-eim-autoadd.x86_64-latest.abi-update.args | 34 +++++++++++
...u-eim-autoadd.x86_64-latest.abi-update.xml | 37 ++++++++++++
.../intel-iommu-eim-autoadd.xml | 34 +++++++++++
tests/qemuxmlconftest.c | 1 +
8 files changed, 164 insertions(+), 2 deletions(-)
create mode 100644 tests/qemuxmlconfdata/intel-iommu-eim-autoadd.x86_64-latest.abi-update.args
create mode 100644 tests/qemuxmlconfdata/intel-iommu-eim-autoadd.x86_64-latest.abi-update.xml
create mode 100644 tests/qemuxmlconfdata/intel-iommu-eim-autoadd.xml
--
2.45.2
1 month, 2 weeks
[libvirt PATCH 0/3] coverity fixes
by Ján Tomko
Ján Tomko (3):
qemu: chardev: avoid impossible overflow
util: json: check return value of virJSONValueFromJsonC
ch: check return value of virJSONValueArrayAppend
src/ch/ch_monitor.c | 3 ++-
src/qemu/qemu_chardev.c | 2 +-
src/util/virjson.c | 5 +++++
3 files changed, 8 insertions(+), 2 deletions(-)
--
2.47.0
1 month, 2 weeks
[PATCH v5 0/6] Add TPM emulator <source type='file/dir' path='..'/>
by marcandre.lureau@redhat.com
From: Marc-André Lureau <marcandre.lureau(a)redhat.com>
Hi,
When swtpm capabilities reports "nvram-backend-dir", it can accepts a single
file or block device where TPM state will be stored.
--tpmstate must be backend-uri=file://.
v5:
- fix indentation
- update doc about state sharing/locking
- add r-b from Stefan
v4:
- add "qemu: explicit swtpm state locking"
- add r-b from Stefan, first patch only atm
v3:
- changed to <source type='file/dir' path='..'/>
v2:
- add <source dir='..'/> support as well (Daniel)
Related: https://issues.redhat.com/browse/CNV-35250
Marc-André Lureau (6):
util: check swtpm nvram-backend-{dir,file} capabilities
tpm: rename 'storagepath' to 'source_path'
schema: add TPM emulator <source type='file' path='..'>
schema: add TPM emulator <source type='dir' path='..'>
qemu_tpm: handle file/block storage source
qemu: explicit swtpm state locking
docs/formatdomain.rst | 22 ++++
src/conf/domain_conf.c | 31 ++++-
src/conf/domain_conf.h | 12 +-
src/conf/schemas/domaincommon.rng | 26 ++++
src/qemu/qemu_tpm.c | 114 +++++++++++++-----
src/security/security_selinux.c | 6 +-
src/util/virtpm.c | 3 +
src/util/virtpm.h | 3 +
.../qemuxmlconfdata/tpm-emulator-tpm2-enc.xml | 1 +
tests/qemuxmlconfdata/tpm-emulator-tpm2.xml | 1 +
tests/testutilsqemu.c | 1 +
11 files changed, 187 insertions(+), 33 deletions(-)
--
2.47.0
1 month, 3 weeks
[libvirt PATCH] docs: fix since tag for TPM with custom path
by Ján Tomko
The feature was pushed after the 10.9.0 release.
Signed-off-by: Ján Tomko <jtomko(a)redhat.com>
Fixes: 579fd44612d044981a5b81a70b03d4a8c0d8930e
---
Pushed as trivial.
docs/formatdomain.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
index 34552a5597..c50744b57b 100644
--- a/docs/formatdomain.rst
+++ b/docs/formatdomain.rst
@@ -8205,7 +8205,7 @@ Example: usage of the TPM Emulator
``path``
The path to the TPM state storage.
- :since:`Since v10.9.0`
+ :since:`Since v10.10.0`
``persistent_state``
The ``persistent_state`` attribute indicates whether 'swtpm' TPM state is
--
2.46.1
1 month, 3 weeks
[libvirt PATCH] docs: formatdomain: fix XML snippets
by Ján Tomko
Fix indentation, missing slashes for unpaired tags and missing angle
brackets.
Signed-off-by: Ján Tomko <jtomko(a)redhat.com>
---
Pushed as trivial.
docs/formatdomain.rst | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
index 2437b5f419..34552a5597 100644
--- a/docs/formatdomain.rst
+++ b/docs/formatdomain.rst
@@ -4401,9 +4401,9 @@ or:
</source>
</hostdev>
<hostdev mode='subsystem' type='mdev' model='vfio-ccw'>
- <source>
- <address uuid='9063cba3-ecef-47b6-abcf-3fef4fdcad85'/>
- </source>
+ <source>
+ <address uuid='9063cba3-ecef-47b6-abcf-3fef4fdcad85'/>
+ </source>
<address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0001'/>
</hostdev>
</devices>
@@ -5668,7 +5668,7 @@ Setting NIC driver-specific options
<host csum='off' gso='off' tso4='off' tso6='off' ecn='off' ufo='off' mrg_rxbuf='off'/>
<guest csum='off' tso4='off' tso6='off' ecn='off' ufo='off'/>
</driver>
- </interface>
+ </interface>
</devices>
...
@@ -6412,7 +6412,7 @@ interaction with the admin.
::
<graphics type='vnc' ...>
- <audio id='1'>
+ <audio id='1'/>
</graphics>
Where ``1`` is an id of the audio device (See `Audio backends`_). If no
@@ -6569,7 +6569,7 @@ interaction with the admin.
::
<graphics type='dbus' ...>
- <audio id='1'>
+ <audio id='1'/>
</graphics>
Where ``1`` is an id of the audio device (See `Audio backends`_).
@@ -7480,7 +7480,7 @@ backend using the ``<audio>`` sub-element:
...
<devices>
<sound model='ich7'>
- <audio id='1'>
+ <audio id='1'/>
</sound>
</devices>
...
@@ -8975,7 +8975,7 @@ attributes and elements with ``type='sev'`` but differs in others. Example confi
<guestVisibleWorkarounds>...</guestVisibleWorkarounds>
<idBlock>...</idBlock>
<idAuth>...</idAuth>
- <hostData>.../hostData>
+ <hostData>...</hostData>
</launchSecurity>
...
</domain>
--
2.47.0
1 month, 3 weeks
[PATCH v2] network: add rule to nftables backend that zeroes checksum of DHCP responses
by Laine Stump
Many long years ago (April 2010), soon after "vhost" in-kernel packet
processing was added to the virtio-net driver, people running RHEL5
virtual machines with a virtio-net interface connected via a libvirt
virtual network noticed that when vhost packet processing was enabled,
their VMs could no longer get an IP address via DHCP - the guest was
ignoring the DHCP response packets sent by the host.
(I've been informed by danpb that the same issue had been encountered,
and "fixed" even earlier than that, in 2006, with Xen as the
hypervisor.)
The "gory details" of the 2010 discussion are chronicled here:
https://lists.isc.org/pipermail/dhcp-hackers/2010-April/001835.html
but basically it was because the checksum of packets wasn't being
fully computed on the host side (because QEMU on the host and the NIC
driver in the guest had agreed between themselves to turn off
checksums because they were unnecessary due to the "link" between the
two being entirely in local memory and not a physical cable), but
1) a partial checksum had been put into the packets at some point by
"someone"
2) the "don't use checksums" info was known by the guest kernel, which
would properly ignore the "bad" checksum), and
3) the packets were being read by the dhclient application on the
guest side with a "raw" socket (thus bypassing the guest kernel UDP
processing that would have known the checksum was irrelevant)),
The "fix" for this ended up being two-tiered:
1) The ISC DHCP package (which contains the aforementioned dhclient
program) made a fix to their dhclient code which caused it to accept
packets anyway even if they didn't have a proper checksum (NB: that's
not a full explanation, and possibly not accurate). This fixed the
problem for guests with an updated dhclient. Here is the code with the
fix to ISC DHCP:
https://github.com/isc-projects/dhcp/blob/master/common/packet.c#L365
This fixed the issue for any new/updated guests that had the fixed
dhclient, but it didn't solve the problem for existing/old guest
images that didn't/couldn't get their dhclient updated. This brings us
to:
2) iptables added a new "CHECKSUM" target and "--checksum-fill"
action:
http://patchwork.ozlabs.org/patch/58525/
and libvirt added an iptables rule for each virtual network to match
DHCP response packets and perform --checksum-fill. This way by the
time dhclient on the guest reads the raw packet, the checksum would be
corrected, and the packet would be accepted. This was pushed upstream
in libvirt commit v0.8.2-142-gfd5b15ff1a.
The word at the time from those more knowledgeable than me was that
the bad checksum problem was really specific to ISC's dhclient running
on Linux, and so once their fix was in use everywhere dhclient was
used, bad checksums would be a thing of the past and the
--checksum-fill iptables rules would no longer be needed (but would
otherwise be harmless if they were still there). (Plot twist: the
dhclient code in fix (1) above apparently is on a Linux-only code path
- this is very important later!)
Based on this information (and also due to the opinion that fixing it
by having iptables modify the packet checksum was really the wrong way
to permanently fix things, i.e. an "ugly hack"), the nftables
developers made the decision to not implement an equivalent to
--checksum-fill in nftables. As a result, when I wrote the nftables
firewall backend for libvirt virtual networks earlier this year, it
didn't add in any rule to "fix" broken UDP checksums (since there was
apparently no equivalent in nftables and, after all, that was fixed
somewhere else 14 years ago, right???)
But last week, when Rich Jones was doing routine testing using a Fedora
40 host (the first Fedora release to use the nftables backend of libvirt's
network driver by default) and a FreeBSD guest, for "some strange
reason", the FreeBSD guest was unable to get an IP address from DHCP!!
https://www.spinics.net/linux/fedora/libvirt-users/msg14356.html
A few quick tests proved that it was the same old "bad checksum"
problem from 2010 come back to haunt us - it wasn't a Linux-only issue
after all.
Phil Sutter and Eric Garver (nftables people) pointed out that, while
nftables doesn't have an action that will *compute* the checksum of a
packet, it *does* have an action that will set the checksum to 0, and
suggested we try adding a "zero the checksum" rule for dhcp response
packets to our nftables ruleset. (Why? Because a checksum value of 0
in a IPv4 UDP packet is defined by RFC768 to mean "no checksum
generated", implying "checksum not needed"). It turns out that this
works - dhclient properly recognizes that a 0 checksum means "don't
bother with the checksum", and accepts the packet as valid.
So to once again fix this timeless bug, this patch adds such a
checksum zeroing rule to the nftables rules setup for each virtual
network.
This has been verified (on a Fedora 40 host) to fix DHCP with FreeBSD
guests, while not breaking it for Fedora or Windows (10) guests.
Fixes: b89c4991daa0ee9371f10937fab3b03c5ffdabc6
Reported-by: Rich Jones <rjones(a)redhat.com>
Fix-Suggested-by: Eric Garver <egarver(a)redhat.com>
Fix-Suggested-by: Phil Sutter <psutter(a)redhat.com>
Signed-off-by: Laine Stump <laine(a)redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
(NB: jdenemar reminded me this is a bugfix, so we don't need to rush
to get it pushed before he freezes for the RC1 snapshot. I'm happy
with it as is though, if anyone is awake early enough and wants to
push it before he snapshots RC1. Otherwise I'll just push it later and
it will be in RC2)
Changes from V1:
* informational errors/omissions in commit log message fixed
src/network/network_nftables.c | 69 +++++++++++++++++++
tests/networkxml2firewalldata/base.nftables | 14 ++++
.../forward-dev-linux.nftables | 16 +++++
.../isolated-linux.nftables | 16 +++++
.../nat-default-linux.nftables | 16 +++++
.../nat-ipv6-linux.nftables | 16 +++++
.../nat-ipv6-masquerade-linux.nftables | 16 +++++
.../nat-many-ips-linux.nftables | 16 +++++
.../nat-port-range-ipv6-linux.nftables | 16 +++++
.../nat-port-range-linux.nftables | 16 +++++
.../nat-tftp-linux.nftables | 16 +++++
.../route-default-linux.nftables | 16 +++++
12 files changed, 243 insertions(+)
diff --git a/src/network/network_nftables.c b/src/network/network_nftables.c
index f8b5ab665d..5523207269 100644
--- a/src/network/network_nftables.c
+++ b/src/network/network_nftables.c
@@ -51,6 +51,7 @@ VIR_LOG_INIT("network.nftables");
#define VIR_NFTABLES_FWD_OUT_CHAIN "guest_output"
#define VIR_NFTABLES_FWD_X_CHAIN "guest_cross"
#define VIR_NFTABLES_NAT_POSTROUTE_CHAIN "guest_nat"
+#define VIR_NFTABLES_MANGLE_POSTROUTE_CHAIN "postroute_mangle"
/* we must avoid using the standard "filter" table as used by
* iptables, as any subsequent attempts to use iptables commands will
@@ -106,6 +107,10 @@ nftablesGlobalChain nftablesChains[] = {
/* chains for NAT rules */
{NULL, VIR_NFTABLES_NAT_POSTROUTE_CHAIN, "{ type nat hook postrouting priority 100; policy accept; }"},
+
+ /* chain for "mangle" rules that modify packets (e.g. 0 out UDP checksums) */
+ {NULL, VIR_NFTABLES_MANGLE_POSTROUTE_CHAIN, "{ type filter hook postrouting priority 0; policy accept; }"},
+
};
@@ -644,6 +649,44 @@ nftablesAddDontMasquerade(virFirewall *fw,
}
+/**
+ * nftablesAddOutputFixUdpChecksum:
+ *
+ * Add a rule to @fw that will 0 out the checksum of udp packets
+ * output from @iface with destination port @port.
+
+ * Zeroing the checksum of a UDP packet tells the receiving end "you
+ * don't need to validate the checksum", which is useful in cases
+ * where the host (sender) thinks that packet checksums will be
+ * computed elsewhere (and so leaves a partially computed checksum in
+ * the packet header) while the guest (receiver) thinks that the
+ * checksum has already been fully computed; in the meantime none of
+ * the code in between has actually finished computing the
+ * checksum.
+ *
+ * An example of this is DHCP response packets from host to
+ * guest. If the checksum of each of these packets isn't zeroed, then
+ * many guests (e.g. FreeBSD) will drop them with reason BAD CHECKSUM;
+ * if the packets arrive at those guests with a checksum of 0, they
+ * will happily accept the packet.
+ */
+static void
+nftablesAddOutputFixUdpChecksum(virFirewall *fw,
+ const char *iface,
+ int port)
+{
+ g_autofree char *portstr = g_strdup_printf("%d", port);
+
+ virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_IPV4,
+ "insert", "rule", "ip",
+ VIR_NFTABLES_PRIVATE_TABLE,
+ VIR_NFTABLES_MANGLE_POSTROUTE_CHAIN,
+ "oif", iface, "udp", "dport", portstr,
+ "counter", "udp", "checksum", "set", "0",
+ NULL);
+}
+
+
static const char networkLocalMulticastIPv4[] = "224.0.0.0/24";
static const char networkLocalMulticastIPv6[] = "ff02::/16";
static const char networkLocalBroadcast[] = "255.255.255.255/32";
@@ -901,6 +944,30 @@ nftablesAddGeneralFirewallRules(virFirewall *fw,
}
+static void
+nftablesAddChecksumFirewallRules(virFirewall *fw,
+ virNetworkDef *def)
+{
+ size_t i;
+ virNetworkIPDef *ipv4def;
+
+ /* Look for the first IPv4 address that has dhcp or tftpboot
+ * defined. We support dhcp config on 1 IPv4 interface only.
+ */
+ for (i = 0; (ipv4def = virNetworkDefGetIPByIndex(def, AF_INET, i)); i++) {
+ if (ipv4def->nranges || ipv4def->nhosts)
+ break;
+ }
+
+ /* If we are doing local DHCP service on this network, add a rule
+ * that will fixup the checksum of DHCP response packets back to
+ * the guests.
+ */
+ if (ipv4def)
+ nftablesAddOutputFixUdpChecksum(fw, def->bridge, 68);
+}
+
+
static int
nftablesAddIPSpecificFirewallRules(virFirewall *fw,
virNetworkDef *def,
@@ -952,6 +1019,8 @@ nftablesAddFirewallRules(virNetworkDef *def, virFirewall **fwRemoval)
return -1;
}
+ nftablesAddChecksumFirewallRules(fw, def);
+
if (virFirewallApply(fw) < 0)
return -1;
diff --git a/tests/networkxml2firewalldata/base.nftables b/tests/networkxml2firewalldata/base.nftables
index a064318739..6371fc12dd 100644
--- a/tests/networkxml2firewalldata/base.nftables
+++ b/tests/networkxml2firewalldata/base.nftables
@@ -68,6 +68,13 @@ libvirt_network \
guest_nat \
'{ type nat hook postrouting priority 100; policy accept; }'
nft \
+add \
+chain \
+ip \
+libvirt_network \
+postroute_mangle \
+'{ type filter hook postrouting priority 0; policy accept; }'
+nft \
list \
table \
ip6 \
@@ -136,3 +143,10 @@ ip6 \
libvirt_network \
guest_nat \
'{ type nat hook postrouting priority 100; policy accept; }'
+nft \
+add \
+chain \
+ip6 \
+libvirt_network \
+postroute_mangle \
+'{ type filter hook postrouting priority 0; policy accept; }'
diff --git a/tests/networkxml2firewalldata/forward-dev-linux.nftables b/tests/networkxml2firewalldata/forward-dev-linux.nftables
index 8badb74beb..9dea1a88a4 100644
--- a/tests/networkxml2firewalldata/forward-dev-linux.nftables
+++ b/tests/networkxml2firewalldata/forward-dev-linux.nftables
@@ -156,3 +156,19 @@ daddr \
224.0.0.0/24 \
counter \
return
+nft \
+-ae insert \
+rule \
+ip \
+libvirt_network \
+postroute_mangle \
+oif \
+virbr0 \
+udp \
+dport \
+68 \
+counter \
+udp \
+checksum \
+set \
+0
diff --git a/tests/networkxml2firewalldata/isolated-linux.nftables b/tests/networkxml2firewalldata/isolated-linux.nftables
index d1b4dac178..67ee0a2bf5 100644
--- a/tests/networkxml2firewalldata/isolated-linux.nftables
+++ b/tests/networkxml2firewalldata/isolated-linux.nftables
@@ -62,3 +62,19 @@ oif \
virbr0 \
counter \
accept
+nft \
+-ae insert \
+rule \
+ip \
+libvirt_network \
+postroute_mangle \
+oif \
+virbr0 \
+udp \
+dport \
+68 \
+counter \
+udp \
+checksum \
+set \
+0
diff --git a/tests/networkxml2firewalldata/nat-default-linux.nftables b/tests/networkxml2firewalldata/nat-default-linux.nftables
index 28508292f9..951a5a6d60 100644
--- a/tests/networkxml2firewalldata/nat-default-linux.nftables
+++ b/tests/networkxml2firewalldata/nat-default-linux.nftables
@@ -142,3 +142,19 @@ daddr \
224.0.0.0/24 \
counter \
return
+nft \
+-ae insert \
+rule \
+ip \
+libvirt_network \
+postroute_mangle \
+oif \
+virbr0 \
+udp \
+dport \
+68 \
+counter \
+udp \
+checksum \
+set \
+0
diff --git a/tests/networkxml2firewalldata/nat-ipv6-linux.nftables b/tests/networkxml2firewalldata/nat-ipv6-linux.nftables
index d8a9ba706d..617ed8b753 100644
--- a/tests/networkxml2firewalldata/nat-ipv6-linux.nftables
+++ b/tests/networkxml2firewalldata/nat-ipv6-linux.nftables
@@ -200,3 +200,19 @@ oif \
virbr0 \
counter \
accept
+nft \
+-ae insert \
+rule \
+ip \
+libvirt_network \
+postroute_mangle \
+oif \
+virbr0 \
+udp \
+dport \
+68 \
+counter \
+udp \
+checksum \
+set \
+0
diff --git a/tests/networkxml2firewalldata/nat-ipv6-masquerade-linux.nftables b/tests/networkxml2firewalldata/nat-ipv6-masquerade-linux.nftables
index a7f09cda59..a710d0e296 100644
--- a/tests/networkxml2firewalldata/nat-ipv6-masquerade-linux.nftables
+++ b/tests/networkxml2firewalldata/nat-ipv6-masquerade-linux.nftables
@@ -272,3 +272,19 @@ daddr \
ff02::/16 \
counter \
return
+nft \
+-ae insert \
+rule \
+ip \
+libvirt_network \
+postroute_mangle \
+oif \
+virbr0 \
+udp \
+dport \
+68 \
+counter \
+udp \
+checksum \
+set \
+0
diff --git a/tests/networkxml2firewalldata/nat-many-ips-linux.nftables b/tests/networkxml2firewalldata/nat-many-ips-linux.nftables
index b826fe6134..0be5fb7e65 100644
--- a/tests/networkxml2firewalldata/nat-many-ips-linux.nftables
+++ b/tests/networkxml2firewalldata/nat-many-ips-linux.nftables
@@ -366,3 +366,19 @@ daddr \
224.0.0.0/24 \
counter \
return
+nft \
+-ae insert \
+rule \
+ip \
+libvirt_network \
+postroute_mangle \
+oif \
+virbr0 \
+udp \
+dport \
+68 \
+counter \
+udp \
+checksum \
+set \
+0
diff --git a/tests/networkxml2firewalldata/nat-port-range-ipv6-linux.nftables b/tests/networkxml2firewalldata/nat-port-range-ipv6-linux.nftables
index ceaed6fa40..7574356855 100644
--- a/tests/networkxml2firewalldata/nat-port-range-ipv6-linux.nftables
+++ b/tests/networkxml2firewalldata/nat-port-range-ipv6-linux.nftables
@@ -384,3 +384,19 @@ daddr \
ff02::/16 \
counter \
return
+nft \
+-ae insert \
+rule \
+ip \
+libvirt_network \
+postroute_mangle \
+oif \
+virbr0 \
+udp \
+dport \
+68 \
+counter \
+udp \
+checksum \
+set \
+0
diff --git a/tests/networkxml2firewalldata/nat-port-range-linux.nftables b/tests/networkxml2firewalldata/nat-port-range-linux.nftables
index 1dc37a26ec..127536e4db 100644
--- a/tests/networkxml2firewalldata/nat-port-range-linux.nftables
+++ b/tests/networkxml2firewalldata/nat-port-range-linux.nftables
@@ -312,3 +312,19 @@ oif \
virbr0 \
counter \
accept
+nft \
+-ae insert \
+rule \
+ip \
+libvirt_network \
+postroute_mangle \
+oif \
+virbr0 \
+udp \
+dport \
+68 \
+counter \
+udp \
+checksum \
+set \
+0
diff --git a/tests/networkxml2firewalldata/nat-tftp-linux.nftables b/tests/networkxml2firewalldata/nat-tftp-linux.nftables
index 28508292f9..951a5a6d60 100644
--- a/tests/networkxml2firewalldata/nat-tftp-linux.nftables
+++ b/tests/networkxml2firewalldata/nat-tftp-linux.nftables
@@ -142,3 +142,19 @@ daddr \
224.0.0.0/24 \
counter \
return
+nft \
+-ae insert \
+rule \
+ip \
+libvirt_network \
+postroute_mangle \
+oif \
+virbr0 \
+udp \
+dport \
+68 \
+counter \
+udp \
+checksum \
+set \
+0
diff --git a/tests/networkxml2firewalldata/route-default-linux.nftables b/tests/networkxml2firewalldata/route-default-linux.nftables
index 282c9542a5..be9c4f5439 100644
--- a/tests/networkxml2firewalldata/route-default-linux.nftables
+++ b/tests/networkxml2firewalldata/route-default-linux.nftables
@@ -56,3 +56,19 @@ oif \
virbr0 \
counter \
accept
+nft \
+-ae insert \
+rule \
+ip \
+libvirt_network \
+postroute_mangle \
+oif \
+virbr0 \
+udp \
+dport \
+68 \
+counter \
+udp \
+checksum \
+set \
+0
--
2.47.0
1 month, 3 weeks
[PATCH] qemu: Report supported panic device models in domcapabilities
by Martin Kletzander
Domain capabilities include information about support for various
devices and models.
Panic devices are not included in the output which means that management
applications need to include the logic for choosing the right device
model or request a default model and try defining such a domain.
Add reporting of panic device models into the domain capabilities based
on the logic in qemuValidateDomainDefPanic() and also report whether
panic devices are supported based on whether at least one model is
supported. That way consumers of the domain capability XML can
differentiate between libvirt not reporting the panic device models or
no model being supported.
Resolves: https://issues.redhat.com/browse/RHEL-65187
Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
---
docs/formatdomaincaps.rst | 24 ++++++++++++++
src/conf/domain_capabilities.c | 13 ++++++++
src/conf/domain_capabilities.h | 8 +++++
src/qemu/qemu_capabilities.c | 31 +++++++++++++++++++
src/qemu/qemu_capabilities.h | 4 +++
.../domaincapsdata/qemu_5.2.0-q35.x86_64.xml | 6 ++++
.../qemu_5.2.0-tcg-virt.riscv64.xml | 1 +
.../domaincapsdata/qemu_5.2.0-tcg.x86_64.xml | 6 ++++
.../qemu_5.2.0-virt.aarch64.xml | 1 +
.../qemu_5.2.0-virt.riscv64.xml | 1 +
tests/domaincapsdata/qemu_5.2.0.aarch64.xml | 1 +
tests/domaincapsdata/qemu_5.2.0.ppc64.xml | 5 +++
tests/domaincapsdata/qemu_5.2.0.s390x.xml | 5 +++
tests/domaincapsdata/qemu_5.2.0.x86_64.xml | 6 ++++
.../domaincapsdata/qemu_6.0.0-q35.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_6.0.0-tcg.x86_64.xml | 7 +++++
.../qemu_6.0.0-virt.aarch64.xml | 5 +++
tests/domaincapsdata/qemu_6.0.0.aarch64.xml | 5 +++
tests/domaincapsdata/qemu_6.0.0.s390x.xml | 5 +++
tests/domaincapsdata/qemu_6.0.0.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_6.1.0-q35.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_6.1.0-tcg.x86_64.xml | 7 +++++
tests/domaincapsdata/qemu_6.1.0.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_6.2.0-q35.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml | 7 +++++
.../qemu_6.2.0-virt.aarch64.xml | 5 +++
tests/domaincapsdata/qemu_6.2.0.aarch64.xml | 5 +++
tests/domaincapsdata/qemu_6.2.0.ppc64.xml | 6 ++++
tests/domaincapsdata/qemu_6.2.0.x86_64.xml | 7 +++++
.../qemu_7.0.0-hvf.aarch64+hvf.xml | 5 +++
.../domaincapsdata/qemu_7.0.0-q35.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_7.0.0-tcg.x86_64.xml | 7 +++++
.../qemu_7.0.0-virt.aarch64.xml | 5 +++
tests/domaincapsdata/qemu_7.0.0.aarch64.xml | 5 +++
tests/domaincapsdata/qemu_7.0.0.ppc64.xml | 6 ++++
tests/domaincapsdata/qemu_7.0.0.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_7.1.0-q35.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_7.1.0-tcg.x86_64.xml | 7 +++++
tests/domaincapsdata/qemu_7.1.0.ppc64.xml | 6 ++++
tests/domaincapsdata/qemu_7.1.0.x86_64.xml | 7 +++++
.../qemu_7.2.0-hvf.x86_64+hvf.xml | 7 +++++
.../domaincapsdata/qemu_7.2.0-q35.x86_64.xml | 7 +++++
.../qemu_7.2.0-tcg.x86_64+hvf.xml | 7 +++++
.../domaincapsdata/qemu_7.2.0-tcg.x86_64.xml | 7 +++++
tests/domaincapsdata/qemu_7.2.0.ppc.xml | 5 +++
tests/domaincapsdata/qemu_7.2.0.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_8.0.0-q35.x86_64.xml | 7 +++++
.../qemu_8.0.0-tcg-virt.riscv64.xml | 5 +++
.../domaincapsdata/qemu_8.0.0-tcg.x86_64.xml | 7 +++++
.../qemu_8.0.0-virt.riscv64.xml | 5 +++
tests/domaincapsdata/qemu_8.0.0.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_8.1.0-q35.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_8.1.0-tcg.x86_64.xml | 7 +++++
tests/domaincapsdata/qemu_8.1.0.s390x.xml | 5 +++
tests/domaincapsdata/qemu_8.1.0.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_8.2.0-q35.x86_64.xml | 7 +++++
.../qemu_8.2.0-tcg-virt.loongarch64.xml | 5 +++
.../domaincapsdata/qemu_8.2.0-tcg.x86_64.xml | 7 +++++
.../qemu_8.2.0-virt.aarch64.xml | 5 +++
.../qemu_8.2.0-virt.loongarch64.xml | 5 +++
tests/domaincapsdata/qemu_8.2.0.aarch64.xml | 5 +++
tests/domaincapsdata/qemu_8.2.0.armv7l.xml | 5 +++
tests/domaincapsdata/qemu_8.2.0.s390x.xml | 5 +++
tests/domaincapsdata/qemu_8.2.0.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_9.0.0-q35.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_9.0.0-tcg.x86_64.xml | 7 +++++
tests/domaincapsdata/qemu_9.0.0.sparc.xml | 1 +
tests/domaincapsdata/qemu_9.0.0.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_9.1.0-q35.x86_64.xml | 7 +++++
.../qemu_9.1.0-tcg-virt.riscv64.xml | 5 +++
.../domaincapsdata/qemu_9.1.0-tcg.x86_64.xml | 7 +++++
.../qemu_9.1.0-virt.riscv64.xml | 5 +++
tests/domaincapsdata/qemu_9.1.0.s390x.xml | 5 +++
tests/domaincapsdata/qemu_9.1.0.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_9.2.0-q35.x86_64.xml | 7 +++++
.../domaincapsdata/qemu_9.2.0-tcg.x86_64.xml | 7 +++++
tests/domaincapsdata/qemu_9.2.0.x86_64.xml | 7 +++++
77 files changed, 502 insertions(+)
diff --git a/docs/formatdomaincaps.rst b/docs/formatdomaincaps.rst
index 5309c6c2513f..886a9f71e123 100644
--- a/docs/formatdomaincaps.rst
+++ b/docs/formatdomaincaps.rst
@@ -671,6 +671,30 @@ Interface device corresponds to `network interface
``backendType``
Options for the ``type`` attribute of the ``<backend/>`` element
+Panic device
+^^^^^^^^^^^^
+
+Interface device corresponds to `panic device
+<formatdomain.html#panic-device>`__ (``<panic/>``) in domain XML.
+
+::
+
+ <domainCapabilities>
+ ...
+ <devices>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ </enum>
+ </panic>
+ ...
+ </devices>
+ </domainCapabilities>
+
+``model``
+ Options for the ``model`` attribute of the ``<panic/>`` element
+
Features
~~~~~~~~
diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c
index cf40d798e51b..5f70a48cec80 100644
--- a/src/conf/domain_capabilities.c
+++ b/src/conf/domain_capabilities.c
@@ -669,6 +669,18 @@ virDomainCapsDeviceNetFormat(virBuffer *buf,
}
+static void
+virDomainCapsDevicePanicFormat(virBuffer *buf,
+ const virDomainCapsDevicePanic *panic)
+{
+ FORMAT_PROLOGUE(panic);
+
+ ENUM_PROCESS(panic, model, virDomainPanicModelTypeToString);
+
+ FORMAT_EPILOGUE(panic);
+}
+
+
/**
* virDomainCapsFeatureGICFormat:
* @buf: target buffer
@@ -850,6 +862,7 @@ virDomainCapsFormat(const virDomainCaps *caps)
virDomainCapsDeviceChannelFormat(&buf, &caps->channel);
virDomainCapsDeviceCryptoFormat(&buf, &caps->crypto);
virDomainCapsDeviceNetFormat(&buf, &caps->net);
+ virDomainCapsDevicePanicFormat(&buf, &caps->panic);
virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</devices>\n");
diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h
index a706ab337ec2..ef0804686046 100644
--- a/src/conf/domain_capabilities.h
+++ b/src/conf/domain_capabilities.h
@@ -257,6 +257,13 @@ struct _virDomainCapsDeviceNet {
virDomainCapsEnum backendType; /* virDomainNetBackendType */
};
+STATIC_ASSERT_ENUM(VIR_DOMAIN_PANIC_MODEL_LAST);
+typedef struct _virDomainCapsDevicePanic virDomainCapsDevicePanic;
+struct _virDomainCapsDevicePanic {
+ virTristateBool supported;
+ virDomainCapsEnum model; /* virDomainPanicModel */
+};
+
typedef enum {
VIR_DOMAIN_CAPS_FEATURE_IOTHREADS = 0,
VIR_DOMAIN_CAPS_FEATURE_VMCOREINFO,
@@ -295,6 +302,7 @@ struct _virDomainCaps {
virDomainCapsDeviceChannel channel;
virDomainCapsDeviceCrypto crypto;
virDomainCapsDeviceNet net;
+ virDomainCapsDevicePanic panic;
/* add new domain devices here */
virDomainCapsFeatureGIC gic;
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 9322ae9ae6c8..38fdade255fe 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -6639,6 +6639,35 @@ virQEMUCapsFillDomainDeviceNetCaps(virQEMUCaps *qemuCaps,
}
+void
+virQEMUCapsFillDomainDevicePanicCaps(virQEMUCaps *qemuCaps,
+ const char *machine,
+ virDomainCapsDevicePanic *panic)
+{
+ panic->model.report = true;
+
+ if (ARCH_IS_S390(qemuCaps->arch))
+ VIR_DOMAIN_CAPS_ENUM_SET(panic->model, VIR_DOMAIN_PANIC_MODEL_S390);
+
+ if (ARCH_IS_X86(qemuCaps->arch))
+ VIR_DOMAIN_CAPS_ENUM_SET(panic->model, VIR_DOMAIN_PANIC_MODEL_HYPERV);
+
+ if (qemuDomainMachineIsPSeries(machine, qemuCaps->arch))
+ VIR_DOMAIN_CAPS_ENUM_SET(panic->model, VIR_DOMAIN_PANIC_MODEL_PSERIES);
+
+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PANIC))
+ VIR_DOMAIN_CAPS_ENUM_SET(panic->model, VIR_DOMAIN_PANIC_MODEL_ISA);
+
+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PANIC_PCI))
+ VIR_DOMAIN_CAPS_ENUM_SET(panic->model, VIR_DOMAIN_PANIC_MODEL_PVPANIC);
+
+ if (panic->model.values)
+ panic->supported = VIR_TRISTATE_BOOL_YES;
+ else
+ panic->supported = VIR_TRISTATE_BOOL_NO;
+}
+
+
/**
* virQEMUCapsSupportsGICVersion:
* @qemuCaps: QEMU capabilities
@@ -6817,6 +6846,7 @@ virQEMUCapsFillDomainCaps(virQEMUCaps *qemuCaps,
virDomainCapsDeviceCrypto *crypto = &domCaps->crypto;
virDomainCapsLaunchSecurity *launchSecurity = &domCaps->launchSecurity;
virDomainCapsDeviceNet *net = &domCaps->net;
+ virDomainCapsDevicePanic *panic = &domCaps->panic;
virQEMUCapsFillDomainFeaturesFromQEMUCaps(qemuCaps, domCaps);
@@ -6859,6 +6889,7 @@ virQEMUCapsFillDomainCaps(virQEMUCaps *qemuCaps,
virQEMUCapsFillDomainDeviceCryptoCaps(qemuCaps, crypto);
virQEMUCapsFillDomainLaunchSecurity(qemuCaps, launchSecurity);
virQEMUCapsFillDomainDeviceNetCaps(qemuCaps, net);
+ virQEMUCapsFillDomainDevicePanicCaps(qemuCaps, domCaps->machine, panic);
return 0;
}
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index 54c7e30903ca..261abcc1b473 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -892,6 +892,10 @@ void virQEMUCapsFillDomainLaunchSecurity(virQEMUCaps *qemuCaps,
void virQEMUCapsFillDomainDeviceNetCaps(virQEMUCaps *qemuCaps,
virDomainCapsDeviceNet *net);
+void virQEMUCapsFillDomainDevicePanicCaps(virQEMUCaps *qemuCaps,
+ const char *machine,
+ virDomainCapsDevicePanic *panic);
+
bool virQEMUCapsGuestIsNative(virArch host,
virArch guest);
diff --git a/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml
index 81bf0ceb0048..5579ad3fc21b 100644
--- a/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml
@@ -536,6 +536,12 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml b/tests/domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml
index eaed71b4ee4b..ac2805919031 100644
--- a/tests/domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml
@@ -146,6 +146,7 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='no'/>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml
index 054bf4a88bdc..a111a8d75162 100644
--- a/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml
@@ -804,6 +804,12 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml
index 00f434b7d729..4708b32b896e 100644
--- a/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml
@@ -200,6 +200,7 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='no'/>
</devices>
<features>
<gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml b/tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml
index 14d936ea4b0d..d636e5686a6d 100644
--- a/tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml
@@ -149,6 +149,7 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='no'/>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.2.0.aarch64.xml b/tests/domaincapsdata/qemu_5.2.0.aarch64.xml
index 00f434b7d729..4708b32b896e 100644
--- a/tests/domaincapsdata/qemu_5.2.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0.aarch64.xml
@@ -200,6 +200,7 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='no'/>
</devices>
<features>
<gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_5.2.0.ppc64.xml b/tests/domaincapsdata/qemu_5.2.0.ppc64.xml
index 3413138fba84..a6daef9798a7 100644
--- a/tests/domaincapsdata/qemu_5.2.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0.ppc64.xml
@@ -166,6 +166,11 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pseries</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.2.0.s390x.xml b/tests/domaincapsdata/qemu_5.2.0.s390x.xml
index 34234a7a2cb4..b64f90872344 100644
--- a/tests/domaincapsdata/qemu_5.2.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_5.2.0.s390x.xml
@@ -266,6 +266,11 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>s390</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.2.0.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0.x86_64.xml
index f298829e3463..8882b9c8a792 100644
--- a/tests/domaincapsdata/qemu_5.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0.x86_64.xml
@@ -536,6 +536,12 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml
index c738f2f9ed95..b0a4bce914a0 100644
--- a/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml
@@ -546,6 +546,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml
index bb1c66cdbfb5..334a52317932 100644
--- a/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml
@@ -837,6 +837,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml
index 9f07b6417836..74f3a04bb053 100644
--- a/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml
@@ -202,6 +202,11 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_6.0.0.aarch64.xml b/tests/domaincapsdata/qemu_6.0.0.aarch64.xml
index 9f07b6417836..74f3a04bb053 100644
--- a/tests/domaincapsdata/qemu_6.0.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0.aarch64.xml
@@ -202,6 +202,11 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_6.0.0.s390x.xml b/tests/domaincapsdata/qemu_6.0.0.s390x.xml
index 7b3d1ab4929b..0db677999091 100644
--- a/tests/domaincapsdata/qemu_6.0.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_6.0.0.s390x.xml
@@ -267,6 +267,11 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>s390</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.0.0.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0.x86_64.xml
index 1efa0578bd2d..30e5686593b8 100644
--- a/tests/domaincapsdata/qemu_6.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0.x86_64.xml
@@ -546,6 +546,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml
index fe22898504ad..777b7c5198d2 100644
--- a/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml
@@ -548,6 +548,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml
index 11ef8be5e3f6..6c58d132d9bf 100644
--- a/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml
@@ -838,6 +838,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.1.0.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0.x86_64.xml
index 43ed790a205f..68b0a658dd8d 100644
--- a/tests/domaincapsdata/qemu_6.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.1.0.x86_64.xml
@@ -548,6 +548,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
index a7240ff9a701..4a055e19ecf9 100644
--- a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
@@ -547,6 +547,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
index 40a69c1ce4c5..91dbb8ff7853 100644
--- a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
@@ -838,6 +838,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml
index ea9a62d78922..051d2782b612 100644
--- a/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml
@@ -209,6 +209,11 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_6.2.0.aarch64.xml b/tests/domaincapsdata/qemu_6.2.0.aarch64.xml
index ea9a62d78922..051d2782b612 100644
--- a/tests/domaincapsdata/qemu_6.2.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0.aarch64.xml
@@ -209,6 +209,11 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml
index 84f2f31e444c..39b07955dd84 100644
--- a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml
@@ -165,6 +165,12 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pseries</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml
index 1452c4ddd163..466be5c7a0df 100644
--- a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml
@@ -547,6 +547,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml b/tests/domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml
index 32eee7ea3b25..bf130dde1075 100644
--- a/tests/domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml
+++ b/tests/domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml
@@ -167,6 +167,11 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml
index c118289a42db..637579d6ec02 100644
--- a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml
@@ -548,6 +548,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
index 89b5758040b7..1ed0cef05b31 100644
--- a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
@@ -832,6 +832,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml
index 1e0fca49889d..4c49343c438e 100644
--- a/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml
@@ -208,6 +208,11 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_7.0.0.aarch64.xml b/tests/domaincapsdata/qemu_7.0.0.aarch64.xml
index 1e0fca49889d..4c49343c438e 100644
--- a/tests/domaincapsdata/qemu_7.0.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0.aarch64.xml
@@ -208,6 +208,11 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml
index 9c31ff40dc8d..52c73d10a4ab 100644
--- a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml
@@ -170,6 +170,12 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pseries</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml
index 935cdcadfd70..acde0c66d9a3 100644
--- a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml
@@ -548,6 +548,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml
index 58a39ed39c32..591e15ab24ab 100644
--- a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml
@@ -515,6 +515,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml
index 387195c12ac5..52086550dbab 100644
--- a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml
@@ -780,6 +780,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.1.0.ppc64.xml b/tests/domaincapsdata/qemu_7.1.0.ppc64.xml
index 3028db7af4af..ca0bc6f0b5af 100644
--- a/tests/domaincapsdata/qemu_7.1.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0.ppc64.xml
@@ -163,6 +163,12 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pseries</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml
index 5082cc119f94..1170d8ed2caa 100644
--- a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml
@@ -515,6 +515,13 @@
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml b/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml
index 091735d83b2a..75b2f1102d1a 100644
--- a/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml
+++ b/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml
@@ -175,6 +175,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml
index bf6b22a6ad8f..653a7a7bacc3 100644
--- a/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml
@@ -522,6 +522,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml
index 6cc40ab932ae..779bdddad660 100644
--- a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml
+++ b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml
@@ -663,6 +663,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml
index 6cc40ab932ae..779bdddad660 100644
--- a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml
@@ -663,6 +663,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.2.0.ppc.xml b/tests/domaincapsdata/qemu_7.2.0.ppc.xml
index 416ebc6f7647..c6ef37b1afad 100644
--- a/tests/domaincapsdata/qemu_7.2.0.ppc.xml
+++ b/tests/domaincapsdata/qemu_7.2.0.ppc.xml
@@ -150,6 +150,11 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.2.0.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0.x86_64.xml
index 3c698aea3377..72d4e7be3984 100644
--- a/tests/domaincapsdata/qemu_7.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.2.0.x86_64.xml
@@ -522,6 +522,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml
index c5c1b0fa692b..3ba9419ede2b 100644
--- a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml
@@ -563,6 +563,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml b/tests/domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml
index af787b8b244e..7a9da4fe4fb2 100644
--- a/tests/domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml
+++ b/tests/domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml
@@ -153,6 +153,11 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml
index 971d3398ce3e..e5ef1673c367 100644
--- a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml
@@ -714,6 +714,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml b/tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml
index 0e3e9b817fdf..258df5b1342b 100644
--- a/tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml
+++ b/tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml
@@ -156,6 +156,11 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml
index 34341b85595e..9b935c0a6bdd 100644
--- a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml
@@ -563,6 +563,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml
index 5ad09e197c21..18d26fbae6a0 100644
--- a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml
@@ -648,6 +648,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml
index a24986f04cd7..6e6a5a8b6c3b 100644
--- a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml
@@ -723,6 +723,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.1.0.s390x.xml b/tests/domaincapsdata/qemu_8.1.0.s390x.xml
index 3564f74cad02..2ca3b1d2ae20 100644
--- a/tests/domaincapsdata/qemu_8.1.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_8.1.0.s390x.xml
@@ -417,6 +417,11 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>s390</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml
index c93e05ec60f8..8880cc4bba94 100644
--- a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml
@@ -648,6 +648,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml
index fda177a385ae..2cffb87550c2 100644
--- a/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml
@@ -650,6 +650,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml b/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml
index 3917ce6138c6..c9f01904cdc0 100644
--- a/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml
@@ -157,6 +157,11 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml
index 694d55f5d8e9..5a7042c7ba95 100644
--- a/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml
@@ -715,6 +715,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml
index 1d1af1a2ac4b..224c61916896 100644
--- a/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml
@@ -215,6 +215,11 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml b/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml
index edddb6d8e721..ed3637eaec0a 100644
--- a/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml
@@ -161,6 +161,11 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.2.0.aarch64.xml b/tests/domaincapsdata/qemu_8.2.0.aarch64.xml
index 1d1af1a2ac4b..224c61916896 100644
--- a/tests/domaincapsdata/qemu_8.2.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0.aarch64.xml
@@ -215,6 +215,11 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_8.2.0.armv7l.xml b/tests/domaincapsdata/qemu_8.2.0.armv7l.xml
index fb0f7665bc5d..7182dca796f2 100644
--- a/tests/domaincapsdata/qemu_8.2.0.armv7l.xml
+++ b/tests/domaincapsdata/qemu_8.2.0.armv7l.xml
@@ -167,6 +167,11 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.2.0.s390x.xml b/tests/domaincapsdata/qemu_8.2.0.s390x.xml
index bcd3f685035f..57ac07c1532f 100644
--- a/tests/domaincapsdata/qemu_8.2.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_8.2.0.s390x.xml
@@ -417,6 +417,11 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>s390</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.2.0.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0.x86_64.xml
index 35badddb3d3b..9b18209a23b3 100644
--- a/tests/domaincapsdata/qemu_8.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0.x86_64.xml
@@ -650,6 +650,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml
index 01e31c538f4c..024375a3548f 100644
--- a/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml
@@ -650,6 +650,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml
index 6449ffefb224..f379930ff7c3 100644
--- a/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml
@@ -691,6 +691,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.0.0.sparc.xml b/tests/domaincapsdata/qemu_9.0.0.sparc.xml
index ab5c3dc4e9ba..e48cdd0ae587 100644
--- a/tests/domaincapsdata/qemu_9.0.0.sparc.xml
+++ b/tests/domaincapsdata/qemu_9.0.0.sparc.xml
@@ -129,6 +129,7 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='no'/>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.0.0.x86_64.xml b/tests/domaincapsdata/qemu_9.0.0.x86_64.xml
index 3f3f25cf239f..42d38288929c 100644
--- a/tests/domaincapsdata/qemu_9.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.0.0.x86_64.xml
@@ -650,6 +650,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml
index 6dd5dcd7a5b1..945e783a25e5 100644
--- a/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml
@@ -681,6 +681,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml b/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml
index 0ae1d0b614fe..b4327bf8783b 100644
--- a/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml
+++ b/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml
@@ -180,6 +180,11 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml
index 739af1fa3558..9ad8eca8452e 100644
--- a/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml
@@ -710,6 +710,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml b/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml
index d3b3971127e3..73e5ba1bc376 100644
--- a/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml
+++ b/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml
@@ -169,6 +169,11 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.1.0.s390x.xml b/tests/domaincapsdata/qemu_9.1.0.s390x.xml
index 2df3dab0173b..be46cfe6ba43 100644
--- a/tests/domaincapsdata/qemu_9.1.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_9.1.0.s390x.xml
@@ -285,6 +285,11 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>s390</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.1.0.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0.x86_64.xml
index 46a54d8c5369..0a131bb15180 100644
--- a/tests/domaincapsdata/qemu_9.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.1.0.x86_64.xml
@@ -681,6 +681,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml
index deff784eeb20..64c841667244 100644
--- a/tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml
@@ -681,6 +681,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml
index 40da25e78bfd..8a4fc13443db 100644
--- a/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml
@@ -710,6 +710,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.2.0.x86_64.xml b/tests/domaincapsdata/qemu_9.2.0.x86_64.xml
index 393d24c2baa9..00f3b78e7e5e 100644
--- a/tests/domaincapsdata/qemu_9.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.2.0.x86_64.xml
@@ -681,6 +681,13 @@
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
--
2.47.0
1 month, 3 weeks
Re: [PATCH RFC v4 11/17] qemu: block: Support block disk along with
throttle filters
by Peter Krempa
On Mon, Nov 04, 2024 at 12:39:24 +0000, Edward Arulanadam wrote:
> Hello Team,
>
> Originator of this libvirt change, Daniel Wu, will not be able to continue contributing to this requested change in libvirt. Another member in our team, Harikumar (harirajkumar), will continue working on this change request and implement any review comment that may come in. We are awaiting feedback review to get this change incorporated in libvirt and adopted in our Cloud solution.
>
> Could you please help with the review
I think at this point the best course of actions will be if Harikumar
adopts the patches, rebases them to the current tree as they no longer
apply cleanly and posts another version.
That way a discussion will be more natural and also it's less likely
that any replies will break threads (as e.g. your email does).
[1] https://www.libvirt.org/hacking.html#preparing-patches
1 month, 3 weeks
[PATCH] spec: Fix attributes for some qemu dirs in %{_rundir}
by Jiri Denemark
The recent attempt to fix the attributes used wrong mode for some
directories used by the QEMU driver. Only dbus and swtpm directories use
770, all other directories are created with 755.
Fixes: 961fb8944d0c2d7d5cc0783888a20317e725a248
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
libvirt.spec.in | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 69693f4851..901ed9c464 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -2275,10 +2275,10 @@ exit 0
%config(noreplace) %{_sysconfdir}/libvirt/qemu.conf
%config(noreplace) %{_sysconfdir}/libvirt/qemu-lockd.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.qemu
-%ghost %dir %attr(0770, %{qemu_user}, %{qemu_group}) %{_rundir}/libvirt/qemu/
+%ghost %dir %attr(0755, %{qemu_user}, %{qemu_group}) %{_rundir}/libvirt/qemu/
%ghost %dir %attr(0770, %{qemu_user}, %{qemu_group}) %{_rundir}/libvirt/qemu/dbus/
-%ghost %dir %attr(0770, %{qemu_user}, %{qemu_group}) %{_rundir}/libvirt/qemu/passt/
-%ghost %dir %attr(0770, %{qemu_user}, %{qemu_group}) %{_rundir}/libvirt/qemu/slirp/
+%ghost %dir %attr(0755, %{qemu_user}, %{qemu_group}) %{_rundir}/libvirt/qemu/passt/
+%ghost %dir %attr(0755, %{qemu_user}, %{qemu_group}) %{_rundir}/libvirt/qemu/slirp/
%ghost %dir %attr(0770, %{qemu_user}, %{qemu_group}) %{_rundir}/libvirt/qemu/swtpm/
%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/
%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/checkpoint/
--
2.47.0
1 month, 3 weeks
Re: [PATCH RFC v4 11/17] qemu: block: Support block disk along with
throttle filters
by Edward Arulanadam
Hello Team,
Originator of this libvirt change, Daniel Wu, will not be able to continue contributing to this requested change in libvirt. Another member in our team, Harikumar (harirajkumar), will continue working on this change request and implement any review comment that may come in. We are awaiting feedback review to get this change incorporated in libvirt and adopted in our Cloud solution.
Could you please help with the review
Thanks and Regards,
Edward Arulanandam
Senior Development Manager, IBM Cloud Storage
1 month, 3 weeks