Enable QXL device build
Enable building for ppc64le Re-added Spice support Don't remove slof.bin for ppc64le
This commit is contained in:
commit
405f932151
@ -0,0 +1,98 @@
|
||||
From 2704bca029bc3c7a3e430d3af8b7696d7d2b1e37 Mon Sep 17 00:00:00 2001
|
||||
From: Kevin Wolf <kwolf@redhat.com>
|
||||
Date: Wed, 4 Mar 2026 13:28:00 +0100
|
||||
Subject: [PATCH 2/2] block: Never drop BLOCK_IO_ERROR with action=stop for
|
||||
rate limiting
|
||||
|
||||
RH-Author: Kevin Wolf <kwolf@redhat.com>
|
||||
RH-MergeRequest: 472: block: Never drop BLOCK_IO_ERROR with action=stop for rate limiting
|
||||
RH-Jira: RHEL-144004
|
||||
RH-Acked-by: Hanna Czenczek <hreitz@redhat.com>
|
||||
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||||
RH-Commit: [1/1] 96b29a65a4a49fb159970892124e5b4bbdcdfeb7 (kmwolf/centos-qemu-kvm)
|
||||
|
||||
Commit 2155d2dd introduced rate limiting for BLOCK_IO_ERROR to emit an
|
||||
event only once a second. This makes sense for cases in which the guest
|
||||
keeps running and can submit more requests that would possibly also fail
|
||||
because there is a problem with the backend.
|
||||
|
||||
However, if the error policy is configured so that the VM is stopped on
|
||||
errors, this is both unnecessary because stopping the VM means that the
|
||||
guest can't issue more requests and in fact harmful because stopping the
|
||||
VM is an important state change that management tools need to keep track
|
||||
of even if it happens more than once in a given second. If an event is
|
||||
dropped, the management tool would see a VM randomly going to paused
|
||||
state without an associated error, so it has a hard time deciding how to
|
||||
handle the situation.
|
||||
|
||||
This patch disables rate limiting for action=stop by not relying on the
|
||||
event type alone any more in monitor_qapi_event_queue_no_reenter(), but
|
||||
checking action for BLOCK_IO_ERROR, too. If the error is reported to the
|
||||
guest or ignored, the rate limiting stays in place.
|
||||
|
||||
Fixes: 2155d2dd7f73 ('block-backend: per-device throttling of BLOCK_IO_ERROR reports')
|
||||
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||||
Message-ID: <20260304122800.51923-1-kwolf@redhat.com>
|
||||
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||||
(cherry picked from commit 544ddbb6373d61292a0e2dc269809cd6bd5edec6)
|
||||
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||||
---
|
||||
monitor/monitor.c | 21 ++++++++++++++++++++-
|
||||
qapi/block-core.json | 2 +-
|
||||
2 files changed, 21 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/monitor/monitor.c b/monitor/monitor.c
|
||||
index c5a5d30877..ae7cf64de0 100644
|
||||
--- a/monitor/monitor.c
|
||||
+++ b/monitor/monitor.c
|
||||
@@ -363,14 +363,33 @@ monitor_qapi_event_queue_no_reenter(QAPIEvent event, QDict *qdict)
|
||||
{
|
||||
MonitorQAPIEventConf *evconf;
|
||||
MonitorQAPIEventState *evstate;
|
||||
+ bool throttled;
|
||||
|
||||
assert(event < QAPI_EVENT__MAX);
|
||||
evconf = &monitor_qapi_event_conf[event];
|
||||
trace_monitor_protocol_event_queue(event, qdict, evconf->rate);
|
||||
+ throttled = evconf->rate;
|
||||
+
|
||||
+ /*
|
||||
+ * Rate limit BLOCK_IO_ERROR only for action != "stop".
|
||||
+ *
|
||||
+ * If the VM is stopped after an I/O error, this is important information
|
||||
+ * for the management tool to keep track of the state of QEMU and we can't
|
||||
+ * merge any events. At the same time, stopping the VM means that the guest
|
||||
+ * can't send additional requests and the number of events is already
|
||||
+ * limited, so we can do without rate limiting.
|
||||
+ */
|
||||
+ if (event == QAPI_EVENT_BLOCK_IO_ERROR) {
|
||||
+ QDict *data = qobject_to(QDict, qdict_get(qdict, "data"));
|
||||
+ const char *action = qdict_get_str(data, "action");
|
||||
+ if (!strcmp(action, "stop")) {
|
||||
+ throttled = false;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
QEMU_LOCK_GUARD(&monitor_lock);
|
||||
|
||||
- if (!evconf->rate) {
|
||||
+ if (!throttled) {
|
||||
/* Unthrottled event */
|
||||
monitor_qapi_event_emit(event, qdict);
|
||||
} else {
|
||||
diff --git a/qapi/block-core.json b/qapi/block-core.json
|
||||
index 2c037183f0..0236936139 100644
|
||||
--- a/qapi/block-core.json
|
||||
+++ b/qapi/block-core.json
|
||||
@@ -5783,7 +5783,7 @@
|
||||
# .. note:: If action is "stop", a `STOP` event will eventually follow
|
||||
# the `BLOCK_IO_ERROR` event.
|
||||
#
|
||||
-# .. note:: This event is rate-limited.
|
||||
+# .. note:: This event is rate-limited, except if action is "stop".
|
||||
#
|
||||
# Since: 0.13
|
||||
#
|
||||
--
|
||||
2.47.3
|
||||
|
||||
89
kvm-hw-uefi-add-variable-digest-to-vmstate.patch
Normal file
89
kvm-hw-uefi-add-variable-digest-to-vmstate.patch
Normal file
@ -0,0 +1,89 @@
|
||||
From b12eac2c22066ee4ff568a4108b38d7bdcd958cc Mon Sep 17 00:00:00 2001
|
||||
From: Gerd Hoffmann <kraxel@redhat.com>
|
||||
Date: Wed, 4 Mar 2026 08:05:34 +0100
|
||||
Subject: [PATCH 1/2] hw/uefi: add variable digest to vmstate
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Gerd Hoffmann <kraxel@redhat.com>
|
||||
RH-MergeRequest: 471: hw/uefi: add variable digest to vmstate
|
||||
RH-Jira: RHEL-153058
|
||||
RH-Acked-by: Peter Xu <peterx@redhat.com>
|
||||
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
RH-Commit: [1/1] c300b30db6bafaacd11b8383531f04873bc8b428 (kraxel.rh/centos-src-qemu-kvm)
|
||||
|
||||
Add digest to vmstate if needed. Also clear digest before loading
|
||||
to make sure it is initialized.
|
||||
|
||||
Fixes: db1ecfb473ac ("hw/uefi: add var-service-vars.c")
|
||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
||||
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
|
||||
Message-ID: <20260304075954.584423-1-kraxel@redhat.com>
|
||||
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
|
||||
(cherry picked from commit b28c3ad1d63c2fe167b6f93fad1616ecd769e599)
|
||||
|
||||
Resolves: RHEL-153058
|
||||
---
|
||||
hw/uefi/var-service-vars.c | 36 ++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 36 insertions(+)
|
||||
|
||||
diff --git a/hw/uefi/var-service-vars.c b/hw/uefi/var-service-vars.c
|
||||
index 8533533ea5..ed4e0a6494 100644
|
||||
--- a/hw/uefi/var-service-vars.c
|
||||
+++ b/hw/uefi/var-service-vars.c
|
||||
@@ -37,8 +37,40 @@ const VMStateDescription vmstate_uefi_time = {
|
||||
},
|
||||
};
|
||||
|
||||
+static int uefi_vars_pre_load(void *opaque)
|
||||
+{
|
||||
+ uefi_variable *var = opaque;
|
||||
+
|
||||
+ /* clear digest which is optional in the live migration data stream */
|
||||
+ var->digest = NULL;
|
||||
+ var->digest_size = 0;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static bool uefi_vars_digest_is_needed(void *opaque)
|
||||
+{
|
||||
+ uefi_variable *var = opaque;
|
||||
+
|
||||
+ if ((var->attributes & EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) &&
|
||||
+ !uefi_vars_is_sb_any(var)) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+const VMStateDescription vmstate_uefi_variable_digest = {
|
||||
+ .name = "uefi-variable-digest",
|
||||
+ .needed = uefi_vars_digest_is_needed,
|
||||
+ .fields = (VMStateField[]) {
|
||||
+ VMSTATE_UINT32(digest_size, uefi_variable),
|
||||
+ VMSTATE_VBUFFER_ALLOC_UINT32(digest, uefi_variable, 0, NULL, digest_size),
|
||||
+ VMSTATE_END_OF_LIST()
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
const VMStateDescription vmstate_uefi_variable = {
|
||||
.name = "uefi-variable",
|
||||
+ .pre_load = uefi_vars_pre_load,
|
||||
.fields = (VMStateField[]) {
|
||||
VMSTATE_UINT8_ARRAY_V(guid.data, uefi_variable, sizeof(QemuUUID), 0),
|
||||
VMSTATE_UINT32(name_size, uefi_variable),
|
||||
@@ -49,6 +81,10 @@ const VMStateDescription vmstate_uefi_variable = {
|
||||
VMSTATE_STRUCT(time, uefi_variable, 0, vmstate_uefi_time, efi_time),
|
||||
VMSTATE_END_OF_LIST()
|
||||
},
|
||||
+ .subsections = (const VMStateDescription * const []) {
|
||||
+ &vmstate_uefi_variable_digest,
|
||||
+ NULL
|
||||
+ }
|
||||
};
|
||||
|
||||
uefi_variable *uefi_vars_find_variable(uefi_vars_state *uv, QemuUUID guid,
|
||||
--
|
||||
2.47.3
|
||||
|
||||
@ -158,7 +158,7 @@ Obsoletes: %{name}-block-ssh <= %{epoch}:%{version} \
|
||||
Summary: QEMU is a machine emulator and virtualizer
|
||||
Name: qemu-kvm
|
||||
Version: 10.1.0
|
||||
Release: 13%{?rcrel}%{?dist}%{?cc_suffix}.alma.1
|
||||
Release: 14%{?rcrel}%{?dist}%{?cc_suffix}.alma.1
|
||||
# Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped
|
||||
# Epoch 15 used for RHEL 8
|
||||
# Epoch 17 used for RHEL 9 (due to release versioning offset in RHEL 8.5)
|
||||
@ -423,6 +423,10 @@ Patch126: kvm-docs-add-SCSI-migrate-pr-documentation.patch
|
||||
# For RHEL-134989 - Hotplugged interface device can not be shown in the guest
|
||||
# For RHEL-146584 - [RHEL-10.2][ARM]: Unable to Check the mem prefetched size on Guest
|
||||
Patch127: kvm-Revert-hw-arm-virt-Use-ACPI-PCI-hotplug-by-default-f.patch
|
||||
# For RHEL-153058 - Qemu crashes with "double free" during restore --reset-nvram with uefi-vars secure boot
|
||||
Patch128: kvm-hw-uefi-add-variable-digest-to-vmstate.patch
|
||||
# For RHEL-144004 - [rhel-10] Regression in BLOCK_IO_ERROR event delivery with (w|r)error setting of 'stop' or 'enospc' due to event rate limiting
|
||||
Patch129: kvm-block-Never-drop-BLOCK_IO_ERROR-with-action-stop-for.patch
|
||||
|
||||
# AlmaLinux Patch
|
||||
Patch2001: 2001-Add-ppc64-support.patch
|
||||
@ -1551,12 +1555,20 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Fri Feb 20 2026 Eduard Abdullin <eabdullin@almalinux.org> - 18:10.1.0-13.alma.1
|
||||
* Thu Mar 19 2026 Eduard Abdullin <eabdullin@almalinux.org> - 18:10.1.0-14.alma.1
|
||||
- Enable QXL device build
|
||||
- Enable building for ppc64le
|
||||
- Re-added Spice support
|
||||
- Don't remove slof.bin for ppc64le
|
||||
|
||||
* Wed Mar 18 2026 Miroslav Rezanina <mrezanin@redhat.com> - 10.1.0-14
|
||||
- kvm-hw-uefi-add-variable-digest-to-vmstate.patch [RHEL-153058]
|
||||
- kvm-block-Never-drop-BLOCK_IO_ERROR-with-action-stop-for.patch [RHEL-144004]
|
||||
- Resolves: RHEL-153058
|
||||
(Qemu crashes with "double free" during restore --reset-nvram with uefi-vars secure boot)
|
||||
- Resolves: RHEL-144004
|
||||
([rhel-10] Regression in BLOCK_IO_ERROR event delivery with (w|r)error setting of 'stop' or 'enospc' due to event rate limiting)
|
||||
|
||||
* Thu Feb 19 2026 Miroslav Rezanina <mrezanin@redhat.com> - 10.1.0-13
|
||||
- kvm-vhost-user-make-vhost_set_vring_file-synchronous.patch [RHEL-147425]
|
||||
- kvm-scsi-generalize-scsi_SG_IO_FROM_DEV-to-scsi_SG_IO.patch [RHEL-132749]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user