From 609fe233e6561003faddc4811931cdbdc62c4d4a Mon Sep 17 00:00:00 2001 From: Jon Maloy Date: Tue, 13 May 2025 21:10:08 -0400 Subject: [PATCH] * Tue May 13 2025 Jon Maloy - 9.1.0-20 - kvm-virtio-net-disable-USO-for-virt-rhel9.6.patch [RHEL-80313] - kvm-arm-Use-arm_virt_compat_set-to-apply-the-compat.patch [RHEL-80313] - kvm-file-posix-probe-discard-alignment-on-Linux-block-de.patch [RHEL-86032] - kvm-block-io-skip-head-tail-requests-on-EINVAL.patch [RHEL-86032] - kvm-file-posix-Fix-crash-on-discard_granularity-0.patch [RHEL-86032] - Resolves: RHEL-80313 (Unable to migrate VM from RHEL10.0/qemu-kvm-9.6 to RHEL9.6/qemu-kvm-9.6) - Resolves: RHEL-86032 (QEMU sends unaligned discards on 4K devices [RHEL-9.7]) --- ..._virt_compat_set-to-apply-the-compat.patch | 53 +++++++ ...io-skip-head-tail-requests-on-EINVAL.patch | 74 ++++++++++ ...x-Fix-crash-on-discard_granularity-0.patch | 46 ++++++ ...-discard-alignment-on-Linux-block-de.patch | 131 +++++++++++++++++ ...tio-net-disable-USO-for-virt-rhel9.6.patch | 135 ++++++++++++++++++ qemu-kvm.spec | 23 ++- 6 files changed, 461 insertions(+), 1 deletion(-) create mode 100644 kvm-arm-Use-arm_virt_compat_set-to-apply-the-compat.patch create mode 100644 kvm-block-io-skip-head-tail-requests-on-EINVAL.patch create mode 100644 kvm-file-posix-Fix-crash-on-discard_granularity-0.patch create mode 100644 kvm-file-posix-probe-discard-alignment-on-Linux-block-de.patch create mode 100644 kvm-virtio-net-disable-USO-for-virt-rhel9.6.patch diff --git a/kvm-arm-Use-arm_virt_compat_set-to-apply-the-compat.patch b/kvm-arm-Use-arm_virt_compat_set-to-apply-the-compat.patch new file mode 100644 index 0000000..e293f6a --- /dev/null +++ b/kvm-arm-Use-arm_virt_compat_set-to-apply-the-compat.patch @@ -0,0 +1,53 @@ +From 173beb6698538dcffefab36772e107ffb0b4fbbd Mon Sep 17 00:00:00 2001 +From: Shaoqin Huang +Date: Mon, 28 Apr 2025 04:34:27 -0400 +Subject: [PATCH 2/5] arm: Use arm_virt_compat_set() to apply the compat + +RH-Author: Shaoqin Huang +RH-MergeRequest: 353: virtio-net: disable USO for virt-rhel9.6 +RH-Jira: RHEL-80313 +RH-Acked-by: Thomas Huth +RH-Acked-by: Eric Auger +RH-Commit: [2/2] 6e7a158e65296928040e70622b3cee59e45c1c36 (shahuang/qemu-kvm) + +JIRA: https://issues.redhat.com/browse/RHEL-80313 +Upstream Status: RHEL only + +Since the pauth and uso both should apply for the latest machine type, +move them to the arm_virt_compat_set() which applies the compat to all +machine types automatically. + +Signed-off-by: Shaoqin Huang +--- + hw/arm/virt.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index 896deaa025..2aef94e776 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -127,6 +127,10 @@ static void arm_virt_compat_set(MachineClass *mc) + arm_virt_compat_len); + compat_props_add(mc->compat_props, arm_rhel_compat, + arm_rhel_compat_len); ++ compat_props_add(mc->compat_props, arm_rhel9_compat, ++ arm_rhel9_compat_len); ++ compat_props_add(mc->compat_props, hw_compat_rhel_9, ++ hw_compat_rhel_9_len); + } + + #define DEFINE_VIRT_MACHINE_IMPL(latest, ...) \ +@@ -3599,10 +3603,6 @@ DEFINE_VIRT_MACHINE(2, 6) + + static void virt_rhel_machine_9_6_0_options(MachineClass *mc) + { +- compat_props_add(mc->compat_props, arm_rhel9_compat, arm_rhel9_compat_len); +- +- /* NB: remember to move this line to the *latest* RHEL 9 machine */ +- compat_props_add(mc->compat_props, hw_compat_rhel_9, hw_compat_rhel_9_len); + } + DEFINE_VIRT_MACHINE_AS_LATEST(9, 6, 0) + +-- +2.48.1 + diff --git a/kvm-block-io-skip-head-tail-requests-on-EINVAL.patch b/kvm-block-io-skip-head-tail-requests-on-EINVAL.patch new file mode 100644 index 0000000..42e6ecf --- /dev/null +++ b/kvm-block-io-skip-head-tail-requests-on-EINVAL.patch @@ -0,0 +1,74 @@ +From e629a362860977161e43ed80bb59d1d05a06b2f2 Mon Sep 17 00:00:00 2001 +From: Stefan Hajnoczi +Date: Thu, 17 Apr 2025 11:05:28 -0400 +Subject: [PATCH 4/5] block/io: skip head/tail requests on EINVAL + +RH-Author: Stefan Hajnoczi +RH-MergeRequest: 355: file-posix: probe discard alignment on Linux block devices +RH-Jira: RHEL-86032 +RH-Acked-by: Kevin Wolf +RH-Acked-by: Eric Blake +RH-Commit: [2/3] 0028fb11f18e16e2aba9506eabb2383c406d17b5 (stefanha/centos-stream-qemu-kvm) + +When guests send misaligned discard requests, the block layer breaks +them up into a misaligned head, an aligned main body, and a misaligned +tail. + +The file-posix block driver on Linux returns -EINVAL on misaligned +discard requests. This causes bdrv_co_pdiscard() to fail and guests +configured with werror=stop will pause. + +Add a special case for misaligned head/tail requests. Simply continue +when EINVAL is encountered so that the aligned main body of the request +can be completed and the guest is not paused. This is the best we can do +when guest discard limits do not match the host discard limits. + +Fixes: https://issues.redhat.com/browse/RHEL-86032 +Signed-off-by: Stefan Hajnoczi +Reviewed-by: Hanna Czenczek +Message-ID: <20250417150528.76470-3-stefanha@redhat.com> +Reviewed-by: Kevin Wolf +Signed-off-by: Kevin Wolf +(cherry picked from commit 4733cb0833c4b223f92ec0136980eeb5239ecb87) +Signed-off-by: Stefan Hajnoczi +--- + block/io.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +diff --git a/block/io.c b/block/io.c +index 301514c880..3e189837a1 100644 +--- a/block/io.c ++++ b/block/io.c +@@ -3105,11 +3105,12 @@ int coroutine_fn bdrv_co_pdiscard(BdrvChild *child, int64_t offset, + /* Invalidate the cached block-status data range if this discard overlaps */ + bdrv_bsc_invalidate_range(bs, offset, bytes); + +- /* Discard is advisory, but some devices track and coalesce ++ /* ++ * Discard is advisory, but some devices track and coalesce + * unaligned requests, so we must pass everything down rather than +- * round here. Still, most devices will just silently ignore +- * unaligned requests (by returning -ENOTSUP), so we must fragment +- * the request accordingly. */ ++ * round here. Still, most devices reject unaligned requests with ++ * -EINVAL or -ENOTSUP, so we must fragment the request accordingly. ++ */ + align = MAX(bs->bl.pdiscard_alignment, bs->bl.request_alignment); + assert(align % bs->bl.request_alignment == 0); + head = offset % align; +@@ -3176,7 +3177,11 @@ int coroutine_fn bdrv_co_pdiscard(BdrvChild *child, int64_t offset, + } + } + if (ret && ret != -ENOTSUP) { +- goto out; ++ if (ret == -EINVAL && (offset % align != 0 || num % align != 0)) { ++ /* Silently skip rejected unaligned head/tail requests */ ++ } else { ++ goto out; /* bail out */ ++ } + } + + offset += num; +-- +2.48.1 + diff --git a/kvm-file-posix-Fix-crash-on-discard_granularity-0.patch b/kvm-file-posix-Fix-crash-on-discard_granularity-0.patch new file mode 100644 index 0000000..8a45dcc --- /dev/null +++ b/kvm-file-posix-Fix-crash-on-discard_granularity-0.patch @@ -0,0 +1,46 @@ +From 3515c6541f71817727a3a8b18ec5252644b51bc0 Mon Sep 17 00:00:00 2001 +From: Kevin Wolf +Date: Tue, 29 Apr 2025 17:56:54 +0200 +Subject: [PATCH 5/5] file-posix: Fix crash on discard_granularity == 0 + +RH-Author: Stefan Hajnoczi +RH-MergeRequest: 355: file-posix: probe discard alignment on Linux block devices +RH-Jira: RHEL-86032 +RH-Acked-by: Kevin Wolf +RH-Acked-by: Eric Blake +RH-Commit: [3/3] b8139a4c5b19efff1f15c314447a6abb89db0ae7 (stefanha/centos-stream-qemu-kvm) + +Block devices that don't support discard have a discard_granularity of +0. Currently, this results in a division by zero when we try to make +sure that it's a multiple of request_alignment. Only try to update +bs->bl.pdiscard_alignment when we got a non-zero discard_granularity +from sysfs. + +Fixes: f605796aae4 ('file-posix: probe discard alignment on Linux block devices') +Signed-off-by: Kevin Wolf +Reviewed-by: Stefan Hajnoczi +Reviewed-by: Eric Blake +Message-ID: <20250429155654.102735-1-kwolf@redhat.com> +Signed-off-by: Stefan Hajnoczi +(cherry picked from commit 71a30d54e6ab1d5c102a8bee2c263414697402ea) +Signed-off-by: Stefan Hajnoczi +--- + block/file-posix.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/block/file-posix.c b/block/file-posix.c +index 3d5b024459..0cb4e922c0 100644 +--- a/block/file-posix.c ++++ b/block/file-posix.c +@@ -1565,7 +1565,7 @@ static void raw_refresh_limits(BlockDriverState *bs, Error **errp) + int ret; + + ret = hdev_get_pdiscard_alignment(&st, &dalign); +- if (ret == 0) { ++ if (ret == 0 && dalign != 0) { + uint32_t ralign = bs->bl.request_alignment; + + /* Probably never happens, but handle it just in case */ +-- +2.48.1 + diff --git a/kvm-file-posix-probe-discard-alignment-on-Linux-block-de.patch b/kvm-file-posix-probe-discard-alignment-on-Linux-block-de.patch new file mode 100644 index 0000000..7d60479 --- /dev/null +++ b/kvm-file-posix-probe-discard-alignment-on-Linux-block-de.patch @@ -0,0 +1,131 @@ +From 29ae77d77cabc3582267cb8a7c4fe10d279a21e6 Mon Sep 17 00:00:00 2001 +From: Stefan Hajnoczi +Date: Thu, 17 Apr 2025 11:05:27 -0400 +Subject: [PATCH 3/5] file-posix: probe discard alignment on Linux block + devices + +RH-Author: Stefan Hajnoczi +RH-MergeRequest: 355: file-posix: probe discard alignment on Linux block devices +RH-Jira: RHEL-86032 +RH-Acked-by: Kevin Wolf +RH-Acked-by: Eric Blake +RH-Commit: [1/3] bb3c17b0da6edeb209874e97d4e2c3b1762a1749 (stefanha/centos-stream-qemu-kvm) + +Populate the pdiscard_alignment block limit so the block layer is able +align discard requests correctly. + +Signed-off-by: Stefan Hajnoczi +Message-ID: <20250417150528.76470-2-stefanha@redhat.com> +Reviewed-by: Kevin Wolf +Signed-off-by: Kevin Wolf +(cherry picked from commit f605796aae42885034400c83ed6a9b07cd6d6481) +Signed-off-by: Stefan Hajnoczi +--- + block/file-posix.c | 67 +++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 66 insertions(+), 1 deletion(-) + +diff --git a/block/file-posix.c b/block/file-posix.c +index ff928b5e85..3d5b024459 100644 +--- a/block/file-posix.c ++++ b/block/file-posix.c +@@ -1268,10 +1268,10 @@ static int get_sysfs_zoned_model(struct stat *st, BlockZoneModel *zoned) + } + #endif /* defined(CONFIG_BLKZONED) */ + ++#ifdef CONFIG_LINUX + /* + * Get a sysfs attribute value as a long integer. + */ +-#ifdef CONFIG_LINUX + static long get_sysfs_long_val(struct stat *st, const char *attribute) + { + g_autofree char *str = NULL; +@@ -1291,6 +1291,30 @@ static long get_sysfs_long_val(struct stat *st, const char *attribute) + } + return ret; + } ++ ++/* ++ * Get a sysfs attribute value as a uint32_t. ++ */ ++static int get_sysfs_u32_val(struct stat *st, const char *attribute, ++ uint32_t *u32) ++{ ++ g_autofree char *str = NULL; ++ const char *end; ++ unsigned int val; ++ int ret; ++ ++ ret = get_sysfs_str_val(st, attribute, &str); ++ if (ret < 0) { ++ return ret; ++ } ++ ++ /* The file is ended with '\n', pass 'end' to accept that. */ ++ ret = qemu_strtoui(str, &end, 10, &val); ++ if (ret == 0 && end && *end == '\0') { ++ *u32 = val; ++ } ++ return ret; ++} + #endif + + static int hdev_get_max_segments(int fd, struct stat *st) +@@ -1310,6 +1334,23 @@ static int hdev_get_max_segments(int fd, struct stat *st) + #endif + } + ++/* ++ * Fills in *dalign with the discard alignment and returns 0 on success, ++ * -errno otherwise. ++ */ ++static int hdev_get_pdiscard_alignment(struct stat *st, uint32_t *dalign) ++{ ++#ifdef CONFIG_LINUX ++ /* ++ * Note that Linux "discard_granularity" is QEMU "discard_alignment". Linux ++ * "discard_alignment" is something else. ++ */ ++ return get_sysfs_u32_val(st, "discard_granularity", dalign); ++#else ++ return -ENOTSUP; ++#endif ++} ++ + #if defined(CONFIG_BLKZONED) + /* + * If the reset_all flag is true, then the wps of zone whose state is +@@ -1519,6 +1560,30 @@ static void raw_refresh_limits(BlockDriverState *bs, Error **errp) + } + } + ++ if (S_ISBLK(st.st_mode)) { ++ uint32_t dalign = 0; ++ int ret; ++ ++ ret = hdev_get_pdiscard_alignment(&st, &dalign); ++ if (ret == 0) { ++ uint32_t ralign = bs->bl.request_alignment; ++ ++ /* Probably never happens, but handle it just in case */ ++ if (dalign < ralign && (ralign % dalign == 0)) { ++ dalign = ralign; ++ } ++ ++ /* The block layer requires a multiple of request_alignment */ ++ if (dalign % ralign != 0) { ++ error_setg(errp, "Invalid pdiscard_alignment limit %u is not a " ++ "multiple of request_alignment %u", dalign, ralign); ++ return; ++ } ++ ++ bs->bl.pdiscard_alignment = dalign; ++ } ++ } ++ + raw_refresh_zoned_limits(bs, &st, errp); + } + +-- +2.48.1 + diff --git a/kvm-virtio-net-disable-USO-for-virt-rhel9.6.patch b/kvm-virtio-net-disable-USO-for-virt-rhel9.6.patch new file mode 100644 index 0000000..632c5aa --- /dev/null +++ b/kvm-virtio-net-disable-USO-for-virt-rhel9.6.patch @@ -0,0 +1,135 @@ +From a7cd7f5b3bd6df30e75532fb19b645c5349f6183 Mon Sep 17 00:00:00 2001 +From: Shaoqin Huang +Date: Thu, 24 Apr 2025 04:48:29 -0400 +Subject: [PATCH 1/5] virtio-net: disable USO for virt-rhel9.6 + +RH-Author: Shaoqin Huang +RH-MergeRequest: 353: virtio-net: disable USO for virt-rhel9.6 +RH-Jira: RHEL-80313 +RH-Acked-by: Thomas Huth +RH-Acked-by: Eric Auger +RH-Commit: [1/2] c7099480e656106219040d45ce7b76b19376227a (shahuang/qemu-kvm) + +JIRA: https://issues.redhat.com/browse/RHEL-80313 +Upstream Status: RHEL only + +RHEL9 kernels have USO* disabled while RHEL10 has it enabled, this can +cause the migration to fail when running a RHEL9 qemu on a RHEL10 kernel +and then migrate to a RHEL9 kernel. + +Make sure the virt-rhel9.6 machine type in RHEL9 stay the same +independent of the kernel. + +Signed-off-by: Shaoqin Huang +--- + hw/arm/virt.c | 3 +++ + hw/core/machine.c | 15 +++++++++------ + hw/i386/pc_piix.c | 1 + + hw/i386/pc_q35.c | 3 +++ + hw/s390x/s390-virtio-ccw.c | 2 ++ + include/hw/boards.h | 3 +++ + 6 files changed, 21 insertions(+), 6 deletions(-) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index c5270a5abc..896deaa025 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -3600,6 +3600,9 @@ DEFINE_VIRT_MACHINE(2, 6) + static void virt_rhel_machine_9_6_0_options(MachineClass *mc) + { + compat_props_add(mc->compat_props, arm_rhel9_compat, arm_rhel9_compat_len); ++ ++ /* NB: remember to move this line to the *latest* RHEL 9 machine */ ++ compat_props_add(mc->compat_props, hw_compat_rhel_9, hw_compat_rhel_9_len); + } + DEFINE_VIRT_MACHINE_AS_LATEST(9, 6, 0) + +diff --git a/hw/core/machine.c b/hw/core/machine.c +index add42660f8..37751f6b9b 100644 +--- a/hw/core/machine.c ++++ b/hw/core/machine.c +@@ -305,6 +305,15 @@ GlobalProperty hw_compat_2_1[] = { + }; + const size_t hw_compat_2_1_len = G_N_ELEMENTS(hw_compat_2_1); + ++/* Apply this to all RHEL9 boards going backward and forward */ ++GlobalProperty hw_compat_rhel_9[] = { ++ /* supported by userspace, but RHEL 9 *kernels* do not support USO. */ ++ { TYPE_VIRTIO_NET, "host_uso", "off"}, ++ { TYPE_VIRTIO_NET, "guest_uso4", "off"}, ++ { TYPE_VIRTIO_NET, "guest_uso6", "off"}, ++}; ++const size_t hw_compat_rhel_9_len = G_N_ELEMENTS(hw_compat_rhel_9); ++ + /* + * RHEL only: machine types for previous major releases are deprecated + */ +@@ -341,12 +350,6 @@ GlobalProperty hw_compat_rhel_9_5[] = { + const size_t hw_compat_rhel_9_5_len = G_N_ELEMENTS(hw_compat_rhel_9_5); + + GlobalProperty hw_compat_rhel_9_4[] = { +- /* hw_compat_rhel_9_4 from hw_compat_8_0 */ +- { TYPE_VIRTIO_NET, "host_uso", "off"}, +- /* hw_compat_rhel_9_4 from hw_compat_8_0 */ +- { TYPE_VIRTIO_NET, "guest_uso4", "off"}, +- /* hw_compat_rhel_9_4 from hw_compat_8_0 */ +- { TYPE_VIRTIO_NET, "guest_uso6", "off"}, + /* hw_compat_rhel_9_4 from hw_compat_8_1 */ + { TYPE_PCI_BRIDGE, "x-pci-express-writeable-slt-bug", "true" }, + /* hw_compat_rhel_9_4 from hw_compat_8_1 */ +diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c +index 656abb5d39..10764bf596 100644 +--- a/hw/i386/pc_piix.c ++++ b/hw/i386/pc_piix.c +@@ -929,6 +929,7 @@ static void pc_i440fx_rhel_machine_7_6_0_options(MachineClass *m) + compat_props_add(m->compat_props, pc_rhel_8_0_compat, pc_rhel_8_0_compat_len); + compat_props_add(m->compat_props, hw_compat_rhel_7_6, hw_compat_rhel_7_6_len); + compat_props_add(m->compat_props, pc_rhel_7_6_compat, pc_rhel_7_6_compat_len); ++ compat_props_add(m->compat_props, hw_compat_rhel_9, hw_compat_rhel_9_len); + } + + DEFINE_I440FX_MACHINE(7, 6, 0); +diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c +index 578f63524f..5bf08be0fb 100644 +--- a/hw/i386/pc_q35.c ++++ b/hw/i386/pc_q35.c +@@ -679,6 +679,9 @@ static void pc_q35_rhel_machine_9_6_0_options(MachineClass *m) + m->desc = "RHEL-9.6.0 PC (Q35 + ICH9, 2009)"; + pcmc->smbios_stream_product = "RHEL"; + pcmc->smbios_stream_version = "9.6.0"; ++ ++ /* NB: remember to move this line to the *latest* RHEL 9 machine */ ++ compat_props_add(m->compat_props, hw_compat_rhel_9, hw_compat_rhel_9_len); + } + + DEFINE_Q35_MACHINE_BUGFIX(9, 6, 0); +diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c +index 9f4ad01789..312e8f18aa 100644 +--- a/hw/s390x/s390-virtio-ccw.c ++++ b/hw/s390x/s390-virtio-ccw.c +@@ -1348,6 +1348,8 @@ static void ccw_rhel_machine_9_6_0_instance_options(MachineState *machine) + + static void ccw_rhel_machine_9_6_0_class_options(MachineClass *mc) + { ++ /* NB: remember to move this line to the *latest* RHEL 9 machine */ ++ compat_props_add(mc->compat_props, hw_compat_rhel_9, hw_compat_rhel_9_len); + } + DEFINE_CCW_MACHINE_AS_LATEST(9, 6, 0); + +diff --git a/include/hw/boards.h b/include/hw/boards.h +index fe011b1e86..8f3fa40cf9 100644 +--- a/include/hw/boards.h ++++ b/include/hw/boards.h +@@ -803,6 +803,9 @@ extern const size_t hw_compat_2_2_len; + extern GlobalProperty hw_compat_2_1[]; + extern const size_t hw_compat_2_1_len; + ++extern GlobalProperty hw_compat_rhel_9[]; ++extern const size_t hw_compat_rhel_9_len; ++ + extern GlobalProperty hw_compat_rhel_9_6[]; + extern const size_t hw_compat_rhel_9_6_len; + +-- +2.48.1 + diff --git a/qemu-kvm.spec b/qemu-kvm.spec index 13ecaa5..9d1ee13 100644 --- a/qemu-kvm.spec +++ b/qemu-kvm.spec @@ -149,7 +149,7 @@ Obsoletes: %{name}-block-ssh <= %{epoch}:%{version} \ Summary: QEMU is a machine emulator and virtualizer Name: qemu-kvm Version: 9.1.0 -Release: 19%{?rcrel}%{?dist}%{?cc_suffix} +Release: 20%{?rcrel}%{?dist}%{?cc_suffix} # 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) @@ -549,6 +549,16 @@ Patch188: kvm-redhat-Enable-virtio-mem-on-s390x.patch Patch189: kvm-target-i386-Fix-conditional-CONFIG_SYNDBG-enablement.patch # For RHEL-7130 - [Hyper-V][RHEL9.2] Nested Hyper-V on KVM: L1 Windows VM with BIOS mode fails to boot up when using '-cpu host,hv_passthrough’ flag Patch190: kvm-target-i386-Exclude-hv-syndbg-from-hv-passthrough.patch +# For RHEL-80313 - Unable to migrate VM from RHEL10.0/qemu-kvm-9.6 to RHEL9.6/qemu-kvm-9.6 +Patch191: kvm-virtio-net-disable-USO-for-virt-rhel9.6.patch +# For RHEL-80313 - Unable to migrate VM from RHEL10.0/qemu-kvm-9.6 to RHEL9.6/qemu-kvm-9.6 +Patch192: kvm-arm-Use-arm_virt_compat_set-to-apply-the-compat.patch +# For RHEL-86032 - QEMU sends unaligned discards on 4K devices [RHEL-9.7] +Patch193: kvm-file-posix-probe-discard-alignment-on-Linux-block-de.patch +# For RHEL-86032 - QEMU sends unaligned discards on 4K devices [RHEL-9.7] +Patch194: kvm-block-io-skip-head-tail-requests-on-EINVAL.patch +# For RHEL-86032 - QEMU sends unaligned discards on 4K devices [RHEL-9.7] +Patch195: kvm-file-posix-Fix-crash-on-discard_granularity-0.patch %if %{have_clang} BuildRequires: clang @@ -1617,6 +1627,17 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %endif %changelog +* Tue May 13 2025 Jon Maloy - 9.1.0-20 +- kvm-virtio-net-disable-USO-for-virt-rhel9.6.patch [RHEL-80313] +- kvm-arm-Use-arm_virt_compat_set-to-apply-the-compat.patch [RHEL-80313] +- kvm-file-posix-probe-discard-alignment-on-Linux-block-de.patch [RHEL-86032] +- kvm-block-io-skip-head-tail-requests-on-EINVAL.patch [RHEL-86032] +- kvm-file-posix-Fix-crash-on-discard_granularity-0.patch [RHEL-86032] +- Resolves: RHEL-80313 + (Unable to migrate VM from RHEL10.0/qemu-kvm-9.6 to RHEL9.6/qemu-kvm-9.6) +- Resolves: RHEL-86032 + (QEMU sends unaligned discards on 4K devices [RHEL-9.7]) + * Mon Apr 28 2025 Jon Maloy - 9.1.0-19 - kvm-target-i386-Fix-conditional-CONFIG_SYNDBG-enablement.patch [RHEL-7130] - kvm-target-i386-Exclude-hv-syndbg-from-hv-passthrough.patch [RHEL-7130]