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