diff --git a/kvm-Revert-monitor-use-aio_co_reschedule_self.patch b/kvm-Revert-monitor-use-aio_co_reschedule_self.patch new file mode 100644 index 0000000..c0dcc12 --- /dev/null +++ b/kvm-Revert-monitor-use-aio_co_reschedule_self.patch @@ -0,0 +1,67 @@ +From 53cc7daf2b6356f236a493cbe63d01afc5636fd3 Mon Sep 17 00:00:00 2001 +From: Stefan Hajnoczi +Date: Mon, 6 May 2024 15:06:21 -0400 +Subject: [PATCH 13/14] Revert "monitor: use aio_co_reschedule_self()" + +RH-Author: Kevin Wolf +RH-MergeRequest: 253: Revert "monitor: use aio_co_reschedule_self()" +RH-Jira: RHEL-43409 RHEL-43410 +RH-Acked-by: Miroslav Rezanina +RH-Acked-by: Hanna Czenczek +RH-Commit: [1/2] 772eccc9da09e6c1793d46ab6cf9ee6615812154 (kmwolf/centos-qemu-kvm) + +Commit 1f25c172f837 ("monitor: use aio_co_reschedule_self()") was a code +cleanup that uses aio_co_reschedule_self() instead of open coding +coroutine rescheduling. + +Bug RHEL-34618 was reported and Kevin Wolf identified +the root cause. I missed that aio_co_reschedule_self() -> +qemu_get_current_aio_context() only knows about +qemu_aio_context/IOThread AioContexts and not about iohandler_ctx. It +does not function correctly when going back from the iohandler_ctx to +qemu_aio_context. + +Go back to open coding the AioContext transitions to avoid this bug. + +This reverts commit 1f25c172f83704e350c0829438d832384084a74d. + +Cc: qemu-stable@nongnu.org +Buglink: https://issues.redhat.com/browse/RHEL-34618 +Signed-off-by: Stefan Hajnoczi +Message-ID: <20240506190622.56095-2-stefanha@redhat.com> +Reviewed-by: Kevin Wolf +Signed-off-by: Kevin Wolf +(cherry picked from commit 719c6819ed9a9838520fa732f9861918dc693bda) +Signed-off-by: Kevin Wolf +--- + qapi/qmp-dispatch.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c +index f3488afeef..176b549473 100644 +--- a/qapi/qmp-dispatch.c ++++ b/qapi/qmp-dispatch.c +@@ -212,7 +212,8 @@ QDict *coroutine_mixed_fn qmp_dispatch(const QmpCommandList *cmds, QObject *requ + * executing the command handler so that it can make progress if it + * involves an AIO_WAIT_WHILE(). + */ +- aio_co_reschedule_self(qemu_get_aio_context()); ++ aio_co_schedule(qemu_get_aio_context(), qemu_coroutine_self()); ++ qemu_coroutine_yield(); + } + + monitor_set_cur(qemu_coroutine_self(), cur_mon); +@@ -226,7 +227,9 @@ QDict *coroutine_mixed_fn qmp_dispatch(const QmpCommandList *cmds, QObject *requ + * Move back to iohandler_ctx so that nested event loops for + * qemu_aio_context don't start new monitor commands. + */ +- aio_co_reschedule_self(iohandler_get_aio_context()); ++ aio_co_schedule(iohandler_get_aio_context(), ++ qemu_coroutine_self()); ++ qemu_coroutine_yield(); + } + } else { + /* +-- +2.39.3 + diff --git a/kvm-aio-warn-about-iohandler_ctx-special-casing.patch b/kvm-aio-warn-about-iohandler_ctx-special-casing.patch new file mode 100644 index 0000000..eeafb8b --- /dev/null +++ b/kvm-aio-warn-about-iohandler_ctx-special-casing.patch @@ -0,0 +1,64 @@ +From 6c8da957fd534b3546354a8b8252c01cf9ee3511 Mon Sep 17 00:00:00 2001 +From: Stefan Hajnoczi +Date: Mon, 6 May 2024 15:06:22 -0400 +Subject: [PATCH 14/14] aio: warn about iohandler_ctx special casing + +RH-Author: Kevin Wolf +RH-MergeRequest: 253: Revert "monitor: use aio_co_reschedule_self()" +RH-Jira: RHEL-43409 RHEL-43410 +RH-Acked-by: Miroslav Rezanina +RH-Acked-by: Hanna Czenczek +RH-Commit: [2/2] 895231553731f09f51275c1abbf50c3440fe977f (kmwolf/centos-qemu-kvm) + +The main loop has two AioContexts: qemu_aio_context and iohandler_ctx. +The main loop runs them both, but nested aio_poll() calls on +qemu_aio_context exclude iohandler_ctx. + +Which one should qemu_get_current_aio_context() return when called from +the main loop? Document that it's always qemu_aio_context. + +This has subtle effects on functions that use +qemu_get_current_aio_context(). For example, aio_co_reschedule_self() +does not work when moving from iohandler_ctx to qemu_aio_context because +qemu_get_current_aio_context() does not differentiate these two +AioContexts. + +Document this in order to reduce the chance of future bugs. + +Signed-off-by: Stefan Hajnoczi +Message-ID: <20240506190622.56095-3-stefanha@redhat.com> +Reviewed-by: Kevin Wolf +Signed-off-by: Kevin Wolf +(cherry picked from commit e669e800fc9ef8806af5c5578249ab758a4f8a5a) +Signed-off-by: Kevin Wolf +--- + include/block/aio.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/include/block/aio.h b/include/block/aio.h +index 8378553eb9..4ee81936ed 100644 +--- a/include/block/aio.h ++++ b/include/block/aio.h +@@ -629,6 +629,9 @@ void aio_co_schedule(AioContext *ctx, Coroutine *co); + * + * Move the currently running coroutine to new_ctx. If the coroutine is already + * running in new_ctx, do nothing. ++ * ++ * Note that this function cannot reschedule from iohandler_ctx to ++ * qemu_aio_context. + */ + void coroutine_fn aio_co_reschedule_self(AioContext *new_ctx); + +@@ -661,6 +664,9 @@ void aio_co_enter(AioContext *ctx, Coroutine *co); + * If called from an IOThread this will be the IOThread's AioContext. If + * called from the main thread or with the "big QEMU lock" taken it + * will be the main loop AioContext. ++ * ++ * Note that the return value is never the main loop's iohandler_ctx and the ++ * return value is the main loop AioContext instead. + */ + AioContext *qemu_get_current_aio_context(void); + +-- +2.39.3 + diff --git a/kvm-qtest-x86-numa-test-do-not-use-the-obsolete-pentium-.patch b/kvm-qtest-x86-numa-test-do-not-use-the-obsolete-pentium-.patch new file mode 100644 index 0000000..d5e1077 --- /dev/null +++ b/kvm-qtest-x86-numa-test-do-not-use-the-obsolete-pentium-.patch @@ -0,0 +1,46 @@ +From 2c7512b27b8d8862e26c6e07169752078513f40c Mon Sep 17 00:00:00 2001 +From: Ani Sinha +Date: Mon, 10 Jun 2024 21:22:58 +0530 +Subject: [PATCH 01/14] qtest/x86/numa-test: do not use the obsolete 'pentium' + cpu + +RH-Author: Ani Sinha +RH-MergeRequest: 243: target/cpu-models/x86: Remove the existing deprecated CPU models on c10s +RH-Jira: RHEL-28972 +RH-Acked-by: Thomas Huth +RH-Acked-by: Igor Mammedov +RH-Acked-by: MST +RH-Commit: [1/4] a9b38ebd4e772a0a1fe40301a6f1abab6b961cd7 (anisinha/centos-qemu-kvm) + +'pentium' cpu is old and obsolete and should be avoided for running tests if +its not strictly needed. Use 'max' cpu instead for generic non-cpu specific +numa test. + +Reviewed-by: Thomas Huth +Reviewed-by: Igor Mammedov +Tested-by: Mario Casquero +Signed-off-by: Ani Sinha +Message-ID: <20240610155303.7933-2-anisinha@redhat.com> +Signed-off-by: Thomas Huth +(cherry picked from commit 07c8d9ac0fa30712fdf78046a7998ee8d2231d6f) +--- + tests/qtest/numa-test.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/tests/qtest/numa-test.c b/tests/qtest/numa-test.c +index 4f4404a4b1..a512f743c4 100644 +--- a/tests/qtest/numa-test.c ++++ b/tests/qtest/numa-test.c +@@ -125,7 +125,8 @@ static void pc_numa_cpu(const void *data) + QTestState *qts; + g_autofree char *cli = NULL; + +- cli = make_cli(data, "-cpu pentium -machine smp.cpus=8,smp.sockets=2,smp.cores=2,smp.threads=2 " ++ cli = make_cli(data, ++ "-cpu max -machine smp.cpus=8,smp.sockets=2,smp.cores=2,smp.threads=2 " + "-numa node,nodeid=0,memdev=ram -numa node,nodeid=1 " + "-numa cpu,node-id=1,socket-id=0 " + "-numa cpu,node-id=0,socket-id=1,core-id=0 " +-- +2.39.3 + diff --git a/kvm-rhel-9.4.0-machine-type-compat-for-virtio-gpu-migrat.patch b/kvm-rhel-9.4.0-machine-type-compat-for-virtio-gpu-migrat.patch new file mode 100644 index 0000000..e61f0a7 --- /dev/null +++ b/kvm-rhel-9.4.0-machine-type-compat-for-virtio-gpu-migrat.patch @@ -0,0 +1,36 @@ +From 44ee061e1904c20cae9cab5e8a62f1b506395383 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= +Date: Wed, 5 Jun 2024 10:28:20 +0400 +Subject: [PATCH 07/14] rhel 9.4.0 machine type compat for virtio-gpu migration +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Marc-André Lureau +RH-MergeRequest: 250: virtio-gpu: fix v2 migration +RH-Jira: RHEL-36329 +RH-Acked-by: Peter Xu +RH-Acked-by: Miroslav Rezanina +RH-Commit: [2/2] 66c98702c691e3454377f5a98230fd1f619a9a87 (marcandre.lureau-rh/qemu-kvm-centos) + +Signed-off-by: Marc-André Lureau +--- + hw/core/machine.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/hw/core/machine.c b/hw/core/machine.c +index cf1d7faaaf..92609aae27 100644 +--- a/hw/core/machine.c ++++ b/hw/core/machine.c +@@ -310,6 +310,8 @@ GlobalProperty hw_compat_rhel_9_5[] = { + { TYPE_VIRTIO_IOMMU_PCI, "granule", "4k" }, + /* hw_compat_rhel_9_5 from hw_compat_8_2 */ + { TYPE_VIRTIO_IOMMU_PCI, "aw-bits", "64" }, ++ /* hw_compat_rhel_9_5 from hw_compat_8_2 */ ++ { "virtio-gpu-device", "x-scanout-vmstate-version", "1" }, + }; + const size_t hw_compat_rhel_9_5_len = G_N_ELEMENTS(hw_compat_rhel_9_5); + +-- +2.39.3 + diff --git a/kvm-s390x-remove-deprecated-rhel-machine-types.patch b/kvm-s390x-remove-deprecated-rhel-machine-types.patch new file mode 100644 index 0000000..f2615bd --- /dev/null +++ b/kvm-s390x-remove-deprecated-rhel-machine-types.patch @@ -0,0 +1,164 @@ +From eb773f38d127117597a1640cd623f1fcd000c067 Mon Sep 17 00:00:00 2001 +From: Sebastian Ott +Date: Fri, 19 Apr 2024 16:37:57 +0200 +Subject: [PATCH 08/14] s390x: remove deprecated rhel machine types +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Thomas Huth +RH-MergeRequest: 252: s390x: remove legacy CPU types +RH-Jira: RHEL-39898 +RH-Acked-by: Cédric Le Goater +RH-Acked-by: Miroslav Rezanina +RH-Commit: [1/5] 5ed0651c38584980b1fe51592a788032526c0f2f (thuth/qemu-kvm-cs9) + +Upstream-status: N/A + +Remove the following deprecated s390x rhel specific machine types: +s390-ccw-virtio-rhel8.6.0 +s390-ccw-virtio-rhel8.5.0 +s390-ccw-virtio-rhel8.4.0 +s390-ccw-virtio-rhel8.2.0 +s390-ccw-virtio-rhel7.6.0 + +Signed-off-by: Sebastian Ott +Signed-off-by: Thomas Huth +--- + hw/s390x/s390-virtio-ccw.c | 106 +------------------------------------ + 1 file changed, 2 insertions(+), 104 deletions(-) + +diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c +index 9ad54682c6..b0b903b78c 100644 +--- a/hw/s390x/s390-virtio-ccw.c ++++ b/hw/s390x/s390-virtio-ccw.c +@@ -610,6 +610,7 @@ static void s390_nmi(NMIState *n, int cpu_index, Error **errp) + s390_cpu_restart(S390_CPU(cs)); + } + ++#if 0 /* Disabled for Red Hat Enterprise Linux */ + static ram_addr_t s390_fixup_ram_size(ram_addr_t sz) + { + /* same logic as in sclp.c */ +@@ -629,6 +630,7 @@ static ram_addr_t s390_fixup_ram_size(ram_addr_t sz) + } + return newsz; + } ++#endif /* disabled for RHEL */ + + static inline bool machine_get_aes_key_wrap(Object *obj, Error **errp) + { +@@ -1329,110 +1331,6 @@ static void ccw_machine_rhel900_class_options(MachineClass *mc) + } + DEFINE_CCW_MACHINE(rhel900, "rhel9.0.0", false); + +-static void ccw_machine_rhel860_instance_options(MachineState *machine) +-{ +- /* Note: The -rhel8.6.0 and -rhel9.0.0 machines are technically identical */ +- ccw_machine_rhel900_instance_options(machine); +-} +- +-static void ccw_machine_rhel860_class_options(MachineClass *mc) +-{ +- static GlobalProperty compat[] = { +- { TYPE_S390_PCI_DEVICE, "interpret", "on", }, +- { TYPE_S390_PCI_DEVICE, "forwarding-assist", "on", }, +- }; +- +- ccw_machine_rhel900_class_options(mc); +- compat_props_add(mc->compat_props, hw_compat_rhel_8_6, hw_compat_rhel_8_6_len); +- compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat)); +- +- /* All RHEL machines for prior major releases are deprecated */ +- mc->deprecation_reason = rhel_old_machine_deprecation; +-} +-DEFINE_CCW_MACHINE(rhel860, "rhel8.6.0", false); +- +-static void ccw_machine_rhel850_instance_options(MachineState *machine) +-{ +- static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V6_0 }; +- +- ccw_machine_rhel860_instance_options(machine); +- +- s390_set_qemu_cpu_model(0x2964, 13, 2, qemu_cpu_feat); +- +- s390_cpudef_featoff_greater(16, 1, S390_FEAT_NNPA); +- s390_cpudef_featoff_greater(16, 1, S390_FEAT_VECTOR_PACKED_DECIMAL_ENH2); +- s390_cpudef_featoff_greater(16, 1, S390_FEAT_BEAR_ENH); +- s390_cpudef_featoff_greater(16, 1, S390_FEAT_RDP); +- s390_cpudef_featoff_greater(16, 1, S390_FEAT_PAI); +-} +- +-static void ccw_machine_rhel850_class_options(MachineClass *mc) +-{ +- static GlobalProperty compat[] = { +- { TYPE_S390_PCI_DEVICE, "interpret", "off", }, +- { TYPE_S390_PCI_DEVICE, "forwarding-assist", "off", }, +- }; +- +- ccw_machine_rhel860_class_options(mc); +- compat_props_add(mc->compat_props, hw_compat_rhel_8_5, hw_compat_rhel_8_5_len); +- compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat)); +- mc->smp_props.prefer_sockets = true; +-} +-DEFINE_CCW_MACHINE(rhel850, "rhel8.5.0", false); +- +-static void ccw_machine_rhel840_instance_options(MachineState *machine) +-{ +- ccw_machine_rhel850_instance_options(machine); +-} +- +-static void ccw_machine_rhel840_class_options(MachineClass *mc) +-{ +- ccw_machine_rhel850_class_options(mc); +- compat_props_add(mc->compat_props, hw_compat_rhel_8_4, hw_compat_rhel_8_4_len); +-} +-DEFINE_CCW_MACHINE(rhel840, "rhel8.4.0", false); +- +-static void ccw_machine_rhel820_instance_options(MachineState *machine) +-{ +- ccw_machine_rhel840_instance_options(machine); +-} +- +-static void ccw_machine_rhel820_class_options(MachineClass *mc) +-{ +- ccw_machine_rhel840_class_options(mc); +- mc->fixup_ram_size = s390_fixup_ram_size; +- /* we did not publish a rhel8.3.0 machine */ +- compat_props_add(mc->compat_props, hw_compat_rhel_8_3, hw_compat_rhel_8_3_len); +- compat_props_add(mc->compat_props, hw_compat_rhel_8_2, hw_compat_rhel_8_2_len); +-} +-DEFINE_CCW_MACHINE(rhel820, "rhel8.2.0", false); +- +-static void ccw_machine_rhel760_instance_options(MachineState *machine) +-{ +- static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V3_1 }; +- +- ccw_machine_rhel820_instance_options(machine); +- +- s390_set_qemu_cpu_model(0x2827, 12, 2, qemu_cpu_feat); +- +- /* The multiple-epoch facility was not available with rhel7.6.0 on z14GA1 */ +- s390_cpudef_featoff(14, 1, S390_FEAT_MULTIPLE_EPOCH); +- s390_cpudef_featoff(14, 1, S390_FEAT_PTFF_QSIE); +- s390_cpudef_featoff(14, 1, S390_FEAT_PTFF_QTOUE); +- s390_cpudef_featoff(14, 1, S390_FEAT_PTFF_STOE); +- s390_cpudef_featoff(14, 1, S390_FEAT_PTFF_STOUE); +-} +- +-static void ccw_machine_rhel760_class_options(MachineClass *mc) +-{ +- ccw_machine_rhel820_class_options(mc); +- /* We never published the s390x version of RHEL-AV 8.0 and 8.1, so add this here */ +- compat_props_add(mc->compat_props, hw_compat_rhel_8_1, hw_compat_rhel_8_1_len); +- compat_props_add(mc->compat_props, hw_compat_rhel_8_0, hw_compat_rhel_8_0_len); +- compat_props_add(mc->compat_props, hw_compat_rhel_7_6, hw_compat_rhel_7_6_len); +-} +-DEFINE_CCW_MACHINE(rhel760, "rhel7.6.0", false); +- + static void ccw_machine_register_types(void) + { + type_register_static(&ccw_machine_info); +-- +2.39.3 + diff --git a/kvm-s390x-select-correct-components-for-no-board-build.patch b/kvm-s390x-select-correct-components-for-no-board-build.patch new file mode 100644 index 0000000..f2fc71b --- /dev/null +++ b/kvm-s390x-select-correct-components-for-no-board-build.patch @@ -0,0 +1,41 @@ +From 874c2ad98804caf0db862c2a45db66a9bceb4fc4 Mon Sep 17 00:00:00 2001 +From: Paolo Bonzini +Date: Thu, 9 May 2024 19:00:35 +0200 +Subject: [PATCH 09/14] s390x: select correct components for no-board build +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Thomas Huth +RH-MergeRequest: 252: s390x: remove legacy CPU types +RH-Jira: RHEL-39898 +RH-Acked-by: Cédric Le Goater +RH-Acked-by: Miroslav Rezanina +RH-Commit: [2/5] 441dfae234f21f801ac9f9e417e96e2edff48bd4 (thuth/qemu-kvm-cs9) + +Signed-off-by: Paolo Bonzini +Reviewed-by: Thomas Huth +Message-ID: <20240509170044.190795-5-pbonzini@redhat.com> +Signed-off-by: Paolo Bonzini +(cherry picked from commit e799b65faef129f2905bd9bf66c30aaaa7115dac) +Conflicts: + .gitlab-ci.d/buildtest.yml + (skipped the changes to the CI files, they don't apply and + are not needed in downstream) +Signed-off-by: Thomas Huth +--- + target/s390x/Kconfig | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/target/s390x/Kconfig b/target/s390x/Kconfig +index 72da48136c..d886be48b4 100644 +--- a/target/s390x/Kconfig ++++ b/target/s390x/Kconfig +@@ -1,2 +1,4 @@ + config S390X + bool ++ select PCI ++ select S390_FLIC +-- +2.39.3 + diff --git a/kvm-target-cpu-models-x86-Remove-the-existing-deprecated.patch b/kvm-target-cpu-models-x86-Remove-the-existing-deprecated.patch new file mode 100644 index 0000000..e7e94d8 --- /dev/null +++ b/kvm-target-cpu-models-x86-Remove-the-existing-deprecated.patch @@ -0,0 +1,62 @@ +From 0d3444e4ba998bbebce282fe1367ef16b635e3ae Mon Sep 17 00:00:00 2001 +From: Ani Sinha +Date: Fri, 14 Jun 2024 13:34:47 +0530 +Subject: [PATCH 04/14] target/cpu-models/x86: Remove the existing deprecated + CPU models on c10s + +RH-Author: Ani Sinha +RH-MergeRequest: 243: target/cpu-models/x86: Remove the existing deprecated CPU models on c10s +RH-Jira: RHEL-28972 +RH-Acked-by: Thomas Huth +RH-Acked-by: Igor Mammedov +RH-Acked-by: MST +RH-Commit: [4/4] ca6905d2f6cae5f120d3acef973cadb1164e0864 (anisinha/centos-qemu-kvm) + +The cpu models that were deprecated in c9s can be removed in c10s. This change +compiled out these cpu models. For x86, 'qemu64' cpu model is still kept as is +as its the default cpu model. + +Signed-off-by: Ani Sinha +--- + target/i386/cpu.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/target/i386/cpu.c b/target/i386/cpu.c +index be7b0663cd..c83d585c9b 100644 +--- a/target/i386/cpu.c ++++ b/target/i386/cpu.c +@@ -2215,6 +2215,7 @@ static const X86CPUDefinition builtin_x86_defs[] = { + .xlevel = 0x8000000A, + .model_id = "QEMU Virtual CPU version " QEMU_HW_VERSION, + }, ++#if 0 // Deprecated CPU models are removed in RHEL-10 + { + .name = "phenom", + .deprecation_note = RHEL_CPU_DEPRECATION, +@@ -2593,6 +2594,7 @@ static const X86CPUDefinition builtin_x86_defs[] = { + .xlevel = 0x80000008, + .model_id = "Intel Core 2 Duo P9xxx (Penryn Class Core 2)", + }, ++#endif // Removal of deprecated CPU models in RHEL-10 + { + .name = "Nehalem", + .level = 11, +@@ -4410,6 +4412,7 @@ static const X86CPUDefinition builtin_x86_defs[] = { + .xlevel = 0x80000008, + .model_id = "Intel Xeon Phi Processor (Knights Mill)", + }, ++#if 0 // Deprecated CPU models are removed in RHEL-10 + { + .name = "Opteron_G1", + .deprecation_note = RHEL_CPU_DEPRECATION, +@@ -4480,6 +4483,7 @@ static const X86CPUDefinition builtin_x86_defs[] = { + .xlevel = 0x80000008, + .model_id = "AMD Opteron 23xx (Gen 3 Class Opteron)", + }, ++#endif + { + .name = "Opteron_G4", + .level = 0xd, +-- +2.39.3 + diff --git a/kvm-target-s390x-Add-a-CONFIG-switch-to-disable-legacy-C.patch b/kvm-target-s390x-Add-a-CONFIG-switch-to-disable-legacy-C.patch new file mode 100644 index 0000000..29bf5d7 --- /dev/null +++ b/kvm-target-s390x-Add-a-CONFIG-switch-to-disable-legacy-C.patch @@ -0,0 +1,116 @@ +From d0f88c7a0c95b4d9ab03221400736cb17cb4b995 Mon Sep 17 00:00:00 2001 +From: Thomas Huth +Date: Thu, 13 Jun 2024 16:14:22 +0200 +Subject: [PATCH 10/14] target/s390x: Add a CONFIG switch to disable legacy + CPUs +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Thomas Huth +RH-MergeRequest: 252: s390x: remove legacy CPU types +RH-Jira: RHEL-39898 +RH-Acked-by: Cédric Le Goater +RH-Acked-by: Miroslav Rezanina +RH-Commit: [3/5] f8e78c8e0349c8645e7df7b0bebed1635865b454 (thuth/qemu-kvm-cs9) + +The oldest model that IBM still supports is the z13. Considering +that each generation can "emulate" the previous two generations +in hardware (via the "IBC" feature of the CPUs), this means that +everything that is older than z114/196 is not an officially supported +CPU model anymore. The Linux kernel still support the z10, so if +we also take this into account, everything older than that can +definitely be considered as a legacy CPU model. + +For downstream builds of QEMU, we would like to be able to disable +these legacy CPUs in the build. Thus add a CONFIG switch that can be +used to disable them (and old machine types that use them by default). + +Message-Id: <20240614125019.588928-1-thuth@redhat.com> +Signed-off-by: Thomas Huth +(cherry picked from commit d6a7c3f44cf3f60c066dbf087ef79d4b12acc642) +--- + hw/s390x/s390-virtio-ccw.c | 4 ++++ + target/s390x/Kconfig | 5 +++++ + target/s390x/cpu_models.c | 9 +++++++++ + 3 files changed, 18 insertions(+) + +diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c +index b0b903b78c..527b05d1d6 100644 +--- a/hw/s390x/s390-virtio-ccw.c ++++ b/hw/s390x/s390-virtio-ccw.c +@@ -46,6 +46,7 @@ + #include "migration/blocker.h" + #include "qapi/visitor.h" + #include "hw/s390x/cpu-topology.h" ++#include CONFIG_DEVICES + + static Error *pv_mig_blocker; + +@@ -1130,6 +1131,8 @@ static void ccw_machine_2_12_class_options(MachineClass *mc) + } + DEFINE_CCW_MACHINE(2_12, "2.12", false); + ++#ifdef CONFIG_S390X_LEGACY_CPUS ++ + static void ccw_machine_2_11_instance_options(MachineState *machine) + { + static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V2_11 }; +@@ -1277,6 +1280,7 @@ static void ccw_machine_2_4_class_options(MachineClass *mc) + DEFINE_CCW_MACHINE(2_4, "2.4", false); + #endif + ++#endif + + static void ccw_machine_rhel940_instance_options(MachineState *machine) + { +diff --git a/target/s390x/Kconfig b/target/s390x/Kconfig +index d886be48b4..8a95f2bc3f 100644 +--- a/target/s390x/Kconfig ++++ b/target/s390x/Kconfig +@@ -2,3 +2,8 @@ config S390X + bool + select PCI + select S390_FLIC ++ ++config S390X_LEGACY_CPUS ++ bool ++ default y ++ depends on S390X +diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c +index 370b3b3065..f4dbcc67bb 100644 +--- a/target/s390x/cpu_models.c ++++ b/target/s390x/cpu_models.c +@@ -25,6 +25,7 @@ + #ifndef CONFIG_USER_ONLY + #include "sysemu/sysemu.h" + #include "target/s390x/kvm/pv.h" ++#include CONFIG_DEVICES + #endif + + #define CPUDEF_INIT(_type, _gen, _ec_ga, _mha_pow, _hmfai, _name, _desc) \ +@@ -50,6 +51,13 @@ + #define RHEL_CPU_DEPRECATION "use at least 'z14', or 'host' / 'qemu' / 'max'" + + static S390CPUDef s390_cpu_defs[] = { ++ /* ++ * Linux requires at least z10 nowadays, and IBM only supports recent CPUs ++ * (see https://www.ibm.com/support/pages/ibm-mainframe-life-cycle-history), ++ * so we consider older CPUs as legacy that can optionally be disabled via ++ * the CONFIG_S390X_LEGACY_CPUS config switch. ++ */ ++#if defined(CONFIG_S390X_LEGACY_CPUS) || defined(CONFIG_USER_ONLY) + CPUDEF_INIT(0x2064, 7, 1, 38, 0x00000000U, "z900", "IBM zSeries 900 GA1"), + CPUDEF_INIT(0x2064, 7, 2, 38, 0x00000000U, "z900.2", "IBM zSeries 900 GA2"), + CPUDEF_INIT(0x2064, 7, 3, 38, 0x00000000U, "z900.3", "IBM zSeries 900 GA3"), +@@ -67,6 +75,7 @@ static S390CPUDef s390_cpu_defs[] = { + CPUDEF_INIT(0x2096, 9, 2, 40, 0x00000000U, "z9BC", "IBM System z9 BC GA1"), + CPUDEF_INIT(0x2094, 9, 3, 40, 0x00000000U, "z9EC.3", "IBM System z9 EC GA3"), + CPUDEF_INIT(0x2096, 9, 3, 40, 0x00000000U, "z9BC.2", "IBM System z9 BC GA2"), ++#endif + CPUDEF_INIT(0x2097, 10, 1, 43, 0x00000000U, "z10EC", "IBM System z10 EC GA1"), + CPUDEF_INIT(0x2097, 10, 2, 43, 0x00000000U, "z10EC.2", "IBM System z10 EC GA2"), + CPUDEF_INIT(0x2098, 10, 2, 43, 0x00000000U, "z10BC", "IBM System z10 BC GA1"), +-- +2.39.3 + diff --git a/kvm-target-s390x-Revert-the-old-s390x-CPU-model-disablem.patch b/kvm-target-s390x-Revert-the-old-s390x-CPU-model-disablem.patch new file mode 100644 index 0000000..cf89fcb --- /dev/null +++ b/kvm-target-s390x-Revert-the-old-s390x-CPU-model-disablem.patch @@ -0,0 +1,66 @@ +From 64eecc611dfdb9252b5e9d20b96cba715ecc1d07 Mon Sep 17 00:00:00 2001 +From: Thomas Huth +Date: Mon, 24 Jun 2024 14:26:14 +0200 +Subject: [PATCH 12/14] target/s390x: Revert the old s390x CPU model + disablement code +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Thomas Huth +RH-MergeRequest: 252: s390x: remove legacy CPU types +RH-Jira: RHEL-39898 +RH-Acked-by: Cédric Le Goater +RH-Acked-by: Miroslav Rezanina +RH-Commit: [5/5] da022e5acaeb1c86fba6245aa2c20491ac83046f (thuth/qemu-kvm-cs9) + +Upstream-Status: N/A + +We now completely disable the old CPU models up to the z12 in +target/s390x/cpu_models.c, so we don't need these old checks +anymore. + +This patch should get squashed into the downstream patch +"Enable/disable devices for RHEL" during the next rebase. + +Signed-off-by: Thomas Huth +--- + target/s390x/cpu_models_sysemu.c | 3 --- + target/s390x/kvm/kvm.c | 7 ------- + 2 files changed, 10 deletions(-) + +diff --git a/target/s390x/cpu_models_sysemu.c b/target/s390x/cpu_models_sysemu.c +index ca2e5d91e2..906d5d42b7 100644 +--- a/target/s390x/cpu_models_sysemu.c ++++ b/target/s390x/cpu_models_sysemu.c +@@ -34,9 +34,6 @@ static void check_unavailable_features(const S390CPUModel *max_model, + (max_model->def->gen == model->def->gen && + max_model->def->ec_ga < model->def->ec_ga)) { + list_add_feat("type", unavailable); +- } else if (model->def->gen < 11 && kvm_enabled()) { +- /* Older CPU models are not supported on Red Hat Enterprise Linux */ +- list_add_feat("type", unavailable); + } + + /* detect missing features if any to properly report them */ +diff --git a/target/s390x/kvm/kvm.c b/target/s390x/kvm/kvm.c +index 55fb4855b1..6dcb8dba2d 100644 +--- a/target/s390x/kvm/kvm.c ++++ b/target/s390x/kvm/kvm.c +@@ -2566,13 +2566,6 @@ void kvm_s390_apply_cpu_model(const S390CPUModel *model, Error **errp) + return; + } + +- /* Older CPU models are not supported on Red Hat Enterprise Linux */ +- if (model->def->gen < 11) { +- error_setg(errp, "KVM: Unsupported CPU type specified: %s", +- MACHINE(qdev_get_machine())->cpu_type); +- return; +- } +- + prop.cpuid = s390_cpuid_from_cpu_model(model); + prop.ibc = s390_ibc_from_cpu_model(model); + /* configure cpu features indicated via STFL(e) */ +-- +2.39.3 + diff --git a/kvm-target-s390x-cpu_models-Disable-everything-up-to-the.patch b/kvm-target-s390x-cpu_models-Disable-everything-up-to-the.patch new file mode 100644 index 0000000..34e08fe --- /dev/null +++ b/kvm-target-s390x-cpu_models-Disable-everything-up-to-the.patch @@ -0,0 +1,56 @@ +From 947ee045103e9148c80a1df0dc300fc840df2680 Mon Sep 17 00:00:00 2001 +From: Thomas Huth +Date: Mon, 24 Jun 2024 14:15:08 +0200 +Subject: [PATCH 11/14] target/s390x/cpu_models: Disable everything up to the + z12 CPU model +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Thomas Huth +RH-MergeRequest: 252: s390x: remove legacy CPU types +RH-Jira: RHEL-39898 +RH-Acked-by: Cédric Le Goater +RH-Acked-by: Miroslav Rezanina +RH-Commit: [4/5] f5236c8041bfcb63df4046f7bb0a12c1fa90062d (thuth/qemu-kvm-cs9) + +Upstream-Status: N/A +JIRA: https://issues.redhat.com/browse/RHEL-39898 + +When RHEL 10.0 gets released, the z14 will be the oldest mainframe +that is still officially supported by IBM, see: +https://www.ibm.com/support/pages/ibm-mainframe-life-cycle-history + +Now each IBM Z machine can "emulate" the previous two CPU types in +hardware for virtual guests, so we should still allow the z12 and +z13 in our qemu-kvm builds, too. But everything that is older than +the z12 can be disabled now. + +Signed-off-by: Thomas Huth +--- + target/s390x/cpu_models.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c +index f4dbcc67bb..ad65149844 100644 +--- a/target/s390x/cpu_models.c ++++ b/target/s390x/cpu_models.c +@@ -75,7 +75,6 @@ static S390CPUDef s390_cpu_defs[] = { + CPUDEF_INIT(0x2096, 9, 2, 40, 0x00000000U, "z9BC", "IBM System z9 BC GA1"), + CPUDEF_INIT(0x2094, 9, 3, 40, 0x00000000U, "z9EC.3", "IBM System z9 EC GA3"), + CPUDEF_INIT(0x2096, 9, 3, 40, 0x00000000U, "z9BC.2", "IBM System z9 BC GA2"), +-#endif + CPUDEF_INIT(0x2097, 10, 1, 43, 0x00000000U, "z10EC", "IBM System z10 EC GA1"), + CPUDEF_INIT(0x2097, 10, 2, 43, 0x00000000U, "z10EC.2", "IBM System z10 EC GA2"), + CPUDEF_INIT(0x2098, 10, 2, 43, 0x00000000U, "z10BC", "IBM System z10 BC GA1"), +@@ -84,6 +83,7 @@ static S390CPUDef s390_cpu_defs[] = { + CPUDEF_INIT(0x2817, 11, 1, 44, 0x08000000U, "z196", "IBM zEnterprise 196 GA1"), + CPUDEF_INIT(0x2817, 11, 2, 44, 0x08000000U, "z196.2", "IBM zEnterprise 196 GA2"), + CPUDEF_INIT(0x2818, 11, 2, 44, 0x08000000U, "z114", "IBM zEnterprise 114 GA1"), ++#endif + CPUDEF_INIT(0x2827, 12, 1, 44, 0x08000000U, "zEC12", "IBM zEnterprise EC12 GA1"), + CPUDEF_INIT(0x2827, 12, 2, 44, 0x08000000U, "zEC12.2", "IBM zEnterprise EC12 GA2"), + CPUDEF_INIT(0x2828, 12, 2, 44, 0x08000000U, "zBC12", "IBM zEnterprise BC12 GA1"), +-- +2.39.3 + diff --git a/kvm-tests-qtest-libqtest-add-qtest_has_cpu_model-api.patch b/kvm-tests-qtest-libqtest-add-qtest_has_cpu_model-api.patch new file mode 100644 index 0000000..106e9e2 --- /dev/null +++ b/kvm-tests-qtest-libqtest-add-qtest_has_cpu_model-api.patch @@ -0,0 +1,162 @@ +From 83bed1458ca3c0137658b53f0a1115d232091703 Mon Sep 17 00:00:00 2001 +From: Ani Sinha +Date: Mon, 10 Jun 2024 21:22:59 +0530 +Subject: [PATCH 02/14] tests/qtest/libqtest: add qtest_has_cpu_model() api +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Ani Sinha +RH-MergeRequest: 243: target/cpu-models/x86: Remove the existing deprecated CPU models on c10s +RH-Jira: RHEL-28972 +RH-Acked-by: Thomas Huth +RH-Acked-by: Igor Mammedov +RH-Acked-by: MST +RH-Commit: [2/4] af128c3ae0a563ca5e2b50bdbdf44f6ce1404aad (anisinha/centos-qemu-kvm) + +Added a new test api qtest_has_cpu_model() in order to check availability of +some cpu models in the current QEMU binary. The specific architecture of the +QEMU binary is selected using the QTEST_QEMU_BINARY environment variable. +This api would be useful to run tests against some older cpu models after +checking if QEMU actually supported these models. + +Signed-off-by: Ani Sinha +Reviewed-by: Reviewed-by: Daniel P. Berrangé +Message-ID: <20240610155303.7933-3-anisinha@redhat.com> +Signed-off-by: Thomas Huth +(cherry picked from commit f43f8abe457a4aa32441bd190638e1118d291c42) +--- + tests/qtest/libqtest.c | 83 ++++++++++++++++++++++++++++++++++++++++++ + tests/qtest/libqtest.h | 8 ++++ + 2 files changed, 91 insertions(+) + +diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c +index d8f80d335e..18e2f7f282 100644 +--- a/tests/qtest/libqtest.c ++++ b/tests/qtest/libqtest.c +@@ -37,6 +37,7 @@ + #include "qapi/qmp/qjson.h" + #include "qapi/qmp/qlist.h" + #include "qapi/qmp/qstring.h" ++#include "qapi/qmp/qbool.h" + + #define MAX_IRQ 256 + +@@ -1471,6 +1472,12 @@ struct MachInfo { + char *alias; + }; + ++struct CpuModel { ++ char *name; ++ char *alias_of; ++ bool deprecated; ++}; ++ + static void qtest_free_machine_list(struct MachInfo *machines) + { + if (machines) { +@@ -1550,6 +1557,82 @@ static struct MachInfo *qtest_get_machines(const char *var) + return machines; + } + ++static struct CpuModel *qtest_get_cpu_models(void) ++{ ++ static struct CpuModel *cpus; ++ QDict *response, *minfo; ++ QList *list; ++ const QListEntry *p; ++ QObject *qobj; ++ QString *qstr; ++ QBool *qbool; ++ QTestState *qts; ++ int idx; ++ ++ if (cpus) { ++ return cpus; ++ } ++ ++ silence_spawn_log = !g_test_verbose(); ++ ++ qts = qtest_init_with_env(NULL, "-machine none"); ++ response = qtest_qmp(qts, "{ 'execute': 'query-cpu-definitions' }"); ++ g_assert(response); ++ list = qdict_get_qlist(response, "return"); ++ g_assert(list); ++ ++ cpus = g_new0(struct CpuModel, qlist_size(list) + 1); ++ ++ for (p = qlist_first(list), idx = 0; p; p = qlist_next(p), idx++) { ++ minfo = qobject_to(QDict, qlist_entry_obj(p)); ++ g_assert(minfo); ++ ++ qobj = qdict_get(minfo, "name"); ++ g_assert(qobj); ++ qstr = qobject_to(QString, qobj); ++ g_assert(qstr); ++ cpus[idx].name = g_strdup(qstring_get_str(qstr)); ++ ++ qobj = qdict_get(minfo, "alias_of"); ++ if (qobj) { /* old machines do not report aliases */ ++ qstr = qobject_to(QString, qobj); ++ g_assert(qstr); ++ cpus[idx].alias_of = g_strdup(qstring_get_str(qstr)); ++ } else { ++ cpus[idx].alias_of = NULL; ++ } ++ ++ qobj = qdict_get(minfo, "deprecated"); ++ qbool = qobject_to(QBool, qobj); ++ g_assert(qbool); ++ cpus[idx].deprecated = qbool_get_bool(qbool); ++ } ++ ++ qtest_quit(qts); ++ qobject_unref(response); ++ ++ silence_spawn_log = false; ++ ++ return cpus; ++} ++ ++bool qtest_has_cpu_model(const char *cpu) ++{ ++ struct CpuModel *cpus; ++ int i; ++ ++ cpus = qtest_get_cpu_models(); ++ ++ for (i = 0; cpus[i].name != NULL; i++) { ++ if (g_str_equal(cpu, cpus[i].name) || ++ (cpus[i].alias_of && g_str_equal(cpu, cpus[i].alias_of))) { ++ return true; ++ } ++ } ++ ++ return false; ++} ++ + void qtest_cb_for_every_machine(void (*cb)(const char *machine), + bool skip_old_versioned) + { +diff --git a/tests/qtest/libqtest.h b/tests/qtest/libqtest.h +index 6e3d3525bf..beb96b18eb 100644 +--- a/tests/qtest/libqtest.h ++++ b/tests/qtest/libqtest.h +@@ -949,6 +949,14 @@ bool qtest_has_machine(const char *machine); + */ + bool qtest_has_machine_with_env(const char *var, const char *machine); + ++/** ++ * qtest_has_cpu_model: ++ * @cpu: The cpu to look for ++ * ++ * Returns: true if the cpu is available in the target binary. ++ */ ++bool qtest_has_cpu_model(const char *cpu); ++ + /** + * qtest_has_device: + * @device: The device to look for +-- +2.39.3 + diff --git a/kvm-tests-qtest-x86-check-for-availability-of-older-cpu-.patch b/kvm-tests-qtest-x86-check-for-availability-of-older-cpu-.patch new file mode 100644 index 0000000..40b1c45 --- /dev/null +++ b/kvm-tests-qtest-x86-check-for-availability-of-older-cpu-.patch @@ -0,0 +1,359 @@ +From 31bce7b3e6776e60e0994a45691bded22cc68476 Mon Sep 17 00:00:00 2001 +From: Ani Sinha +Date: Mon, 10 Jun 2024 21:23:00 +0530 +Subject: [PATCH 03/14] tests/qtest/x86: check for availability of older cpu + models before running tests +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Ani Sinha +RH-MergeRequest: 243: target/cpu-models/x86: Remove the existing deprecated CPU models on c10s +RH-Jira: RHEL-28972 +RH-Acked-by: Thomas Huth +RH-Acked-by: Igor Mammedov +RH-Acked-by: MST +RH-Commit: [3/4] 5a049fbd48fda9c1b2d74dc8b389c43547029df2 (anisinha/centos-qemu-kvm) + +It is better to check if some older cpu models like 486, athlon, pentium, +penryn, phenom, core2duo etc are available before running their corresponding +tests. Some downstream distributions may no longer support these older cpu +models. + +Signature of add_feature_test() has been modified to return void as +FeatureTestArgs* was not used by the caller. + +One minor correction. Replaced 'phenom' with '486' in the test +'x86/cpuid/auto-level/phenom/arat' matching the cpu used. + +Signed-off-by: Ani Sinha +Reviewed-by: Daniel P. Berrangé +Message-ID: <20240610155303.7933-4-anisinha@redhat.com> +Signed-off-by: Thomas Huth +(cherry picked from commit e08f6e0b9fcf708f641bbb8839b7e30d857989d9) +--- + tests/qtest/test-x86-cpuid-compat.c | 170 ++++++++++++++++++---------- + 1 file changed, 108 insertions(+), 62 deletions(-) + +diff --git a/tests/qtest/test-x86-cpuid-compat.c b/tests/qtest/test-x86-cpuid-compat.c +index 6a39454fce..b9e7e5ef7b 100644 +--- a/tests/qtest/test-x86-cpuid-compat.c ++++ b/tests/qtest/test-x86-cpuid-compat.c +@@ -67,10 +67,29 @@ static void test_cpuid_prop(const void *data) + g_free(path); + } + +-static void add_cpuid_test(const char *name, const char *cmdline, ++static void add_cpuid_test(const char *name, const char *cpu, ++ const char *cpufeat, const char *machine, + const char *property, int64_t expected_value) + { + CpuidTestArgs *args = g_new0(CpuidTestArgs, 1); ++ char *cmdline; ++ char *save; ++ ++ if (!qtest_has_cpu_model(cpu)) { ++ return; ++ } ++ cmdline = g_strdup_printf("-cpu %s", cpu); ++ ++ if (cpufeat) { ++ save = cmdline; ++ cmdline = g_strdup_printf("%s,%s", cmdline, cpufeat); ++ g_free(save); ++ } ++ if (machine) { ++ save = cmdline; ++ cmdline = g_strdup_printf("-machine %s %s", machine, cmdline); ++ g_free(save); ++ } + args->cmdline = cmdline; + args->property = property; + args->expected_value = expected_value; +@@ -149,12 +168,24 @@ static void test_feature_flag(const void *data) + * either "feature-words" or "filtered-features", when running QEMU + * using cmdline + */ +-static FeatureTestArgs *add_feature_test(const char *name, const char *cmdline, +- uint32_t eax, uint32_t ecx, +- const char *reg, int bitnr, +- bool expected_value) ++static void add_feature_test(const char *name, const char *cpu, ++ const char *cpufeat, uint32_t eax, ++ uint32_t ecx, const char *reg, ++ int bitnr, bool expected_value) + { + FeatureTestArgs *args = g_new0(FeatureTestArgs, 1); ++ char *cmdline; ++ ++ if (!qtest_has_cpu_model(cpu)) { ++ return; ++ } ++ ++ if (cpufeat) { ++ cmdline = g_strdup_printf("-cpu %s,%s", cpu, cpufeat); ++ } else { ++ cmdline = g_strdup_printf("-cpu %s", cpu); ++ } ++ + args->cmdline = cmdline; + args->in_eax = eax; + args->in_ecx = ecx; +@@ -162,13 +193,17 @@ static FeatureTestArgs *add_feature_test(const char *name, const char *cmdline, + args->bitnr = bitnr; + args->expected_value = expected_value; + qtest_add_data_func(name, args, test_feature_flag); +- return args; ++ return; + } + + static void test_plus_minus_subprocess(void) + { + char *path; + ++ if (!qtest_has_cpu_model("pentium")) { ++ return; ++ } ++ + /* Rules: + * 1)"-foo" overrides "+foo" + * 2) "[+-]foo" overrides "foo=..." +@@ -198,6 +233,10 @@ static void test_plus_minus_subprocess(void) + + static void test_plus_minus(void) + { ++ if (!qtest_has_cpu_model("pentium")) { ++ return; ++ } ++ + g_test_trap_subprocess("/x86/cpuid/parsing-plus-minus/subprocess", 0, 0); + g_test_trap_assert_passed(); + g_test_trap_assert_stderr("*Ambiguous CPU model string. " +@@ -217,99 +256,105 @@ int main(int argc, char **argv) + + /* Original level values for CPU models: */ + add_cpuid_test("x86/cpuid/phenom/level", +- "-cpu phenom", "level", 5); ++ "phenom", NULL, NULL, "level", 5); + add_cpuid_test("x86/cpuid/Conroe/level", +- "-cpu Conroe", "level", 10); ++ "Conroe", NULL, NULL, "level", 10); + add_cpuid_test("x86/cpuid/SandyBridge/level", +- "-cpu SandyBridge", "level", 0xd); ++ "SandyBridge", NULL, NULL, "level", 0xd); + add_cpuid_test("x86/cpuid/486/xlevel", +- "-cpu 486", "xlevel", 0); ++ "486", NULL, NULL, "xlevel", 0); + add_cpuid_test("x86/cpuid/core2duo/xlevel", +- "-cpu core2duo", "xlevel", 0x80000008); ++ "core2duo", NULL, NULL, "xlevel", 0x80000008); + add_cpuid_test("x86/cpuid/phenom/xlevel", +- "-cpu phenom", "xlevel", 0x8000001A); ++ "phenom", NULL, NULL, "xlevel", 0x8000001A); + add_cpuid_test("x86/cpuid/athlon/xlevel", +- "-cpu athlon", "xlevel", 0x80000008); ++ "athlon", NULL, NULL, "xlevel", 0x80000008); + + /* If level is not large enough, it should increase automatically: */ + /* CPUID[6].EAX: */ +- add_cpuid_test("x86/cpuid/auto-level/phenom/arat", +- "-cpu 486,arat=on", "level", 6); ++ add_cpuid_test("x86/cpuid/auto-level/486/arat", ++ "486", "arat=on", NULL, "level", 6); + /* CPUID[EAX=7,ECX=0].EBX: */ + add_cpuid_test("x86/cpuid/auto-level/phenom/fsgsbase", +- "-cpu phenom,fsgsbase=on", "level", 7); ++ "phenom", "fsgsbase=on", NULL, "level", 7); + /* CPUID[EAX=7,ECX=0].ECX: */ + add_cpuid_test("x86/cpuid/auto-level/phenom/avx512vbmi", +- "-cpu phenom,avx512vbmi=on", "level", 7); ++ "phenom", "avx512vbmi=on", NULL, "level", 7); + /* CPUID[EAX=0xd,ECX=1].EAX: */ + add_cpuid_test("x86/cpuid/auto-level/phenom/xsaveopt", +- "-cpu phenom,xsaveopt=on", "level", 0xd); ++ "phenom", "xsaveopt=on", NULL, "level", 0xd); + /* CPUID[8000_0001].EDX: */ + add_cpuid_test("x86/cpuid/auto-xlevel/486/3dnow", +- "-cpu 486,3dnow=on", "xlevel", 0x80000001); ++ "486", "3dnow=on", NULL, "xlevel", 0x80000001); + /* CPUID[8000_0001].ECX: */ + add_cpuid_test("x86/cpuid/auto-xlevel/486/sse4a", +- "-cpu 486,sse4a=on", "xlevel", 0x80000001); ++ "486", "sse4a=on", NULL, "xlevel", 0x80000001); + /* CPUID[8000_0007].EDX: */ + add_cpuid_test("x86/cpuid/auto-xlevel/486/invtsc", +- "-cpu 486,invtsc=on", "xlevel", 0x80000007); ++ "486", "invtsc=on", NULL, "xlevel", 0x80000007); + /* CPUID[8000_000A].EDX: */ + add_cpuid_test("x86/cpuid/auto-xlevel/486/npt", +- "-cpu 486,svm=on,npt=on", "xlevel", 0x8000000A); ++ "486", "svm=on,npt=on", NULL, "xlevel", 0x8000000A); + /* CPUID[C000_0001].EDX: */ + add_cpuid_test("x86/cpuid/auto-xlevel2/phenom/xstore", +- "-cpu phenom,xstore=on", "xlevel2", 0xC0000001); ++ "phenom", "xstore=on", NULL, "xlevel2", 0xC0000001); + /* SVM needs CPUID[0x8000000A] */ + add_cpuid_test("x86/cpuid/auto-xlevel/athlon/svm", +- "-cpu athlon,svm=on", "xlevel", 0x8000000A); ++ "athlon", "svm=on", NULL, "xlevel", 0x8000000A); + + + /* If level is already large enough, it shouldn't change: */ + add_cpuid_test("x86/cpuid/auto-level/SandyBridge/multiple", +- "-cpu SandyBridge,arat=on,fsgsbase=on,avx512vbmi=on", +- "level", 0xd); ++ "SandyBridge", "arat=on,fsgsbase=on,avx512vbmi=on", ++ NULL, "level", 0xd); + /* If level is explicitly set, it shouldn't change: */ + add_cpuid_test("x86/cpuid/auto-level/486/fixed/0xF", +- "-cpu 486,level=0xF,arat=on,fsgsbase=on,avx512vbmi=on,xsaveopt=on", +- "level", 0xF); ++ "486", ++ "level=0xF,arat=on,fsgsbase=on,avx512vbmi=on,xsaveopt=on", ++ NULL, "level", 0xF); + add_cpuid_test("x86/cpuid/auto-level/486/fixed/2", +- "-cpu 486,level=2,arat=on,fsgsbase=on,avx512vbmi=on,xsaveopt=on", +- "level", 2); ++ "486", ++ "level=2,arat=on,fsgsbase=on,avx512vbmi=on,xsaveopt=on", ++ NULL, "level", 2); + add_cpuid_test("x86/cpuid/auto-level/486/fixed/0", +- "-cpu 486,level=0,arat=on,fsgsbase=on,avx512vbmi=on,xsaveopt=on", +- "level", 0); ++ "486", ++ "level=0,arat=on,fsgsbase=on,avx512vbmi=on,xsaveopt=on", ++ NULL, "level", 0); + + /* if xlevel is already large enough, it shouldn't change: */ + add_cpuid_test("x86/cpuid/auto-xlevel/phenom/3dnow", +- "-cpu phenom,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", +- "xlevel", 0x8000001A); ++ "phenom", "3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", ++ NULL, "xlevel", 0x8000001A); + /* If xlevel is explicitly set, it shouldn't change: */ + add_cpuid_test("x86/cpuid/auto-xlevel/486/fixed/80000002", +- "-cpu 486,xlevel=0x80000002,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", +- "xlevel", 0x80000002); ++ "486", ++ "xlevel=0x80000002,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", ++ NULL, "xlevel", 0x80000002); + add_cpuid_test("x86/cpuid/auto-xlevel/486/fixed/8000001A", +- "-cpu 486,xlevel=0x8000001A,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", +- "xlevel", 0x8000001A); ++ "486", ++ "xlevel=0x8000001A,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", ++ NULL, "xlevel", 0x8000001A); + add_cpuid_test("x86/cpuid/auto-xlevel/phenom/fixed/0", +- "-cpu 486,xlevel=0,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", +- "xlevel", 0); ++ "486", ++ "xlevel=0,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", ++ NULL, "xlevel", 0); + + /* if xlevel2 is already large enough, it shouldn't change: */ + add_cpuid_test("x86/cpuid/auto-xlevel2/486/fixed", +- "-cpu 486,xlevel2=0xC0000002,xstore=on", +- "xlevel2", 0xC0000002); ++ "486", "xlevel2=0xC0000002,xstore=on", ++ NULL, "xlevel2", 0xC0000002); + + /* Check compatibility of old machine-types that didn't + * auto-increase level/xlevel/xlevel2: */ + if (qtest_has_machine("pc-i440fx-2.7")) { + add_cpuid_test("x86/cpuid/auto-level/pc-2.7", +- "-machine pc-i440fx-2.7 -cpu 486,arat=on,avx512vbmi=on,xsaveopt=on", +- "level", 1); ++ "486", "arat=on,avx512vbmi=on,xsaveopt=on", ++ "pc-i440fx-2.7", "level", 1); + add_cpuid_test("x86/cpuid/auto-xlevel/pc-2.7", +- "-machine pc-i440fx-2.7 -cpu 486,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", +- "xlevel", 0); ++ "486", "3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", ++ "pc-i440fx-2.7", "xlevel", 0); + add_cpuid_test("x86/cpuid/auto-xlevel2/pc-2.7", +- "-machine pc-i440fx-2.7 -cpu 486,xstore=on", ++ "486", "xstore=on", "pc-i440fx-2.7", + "xlevel2", 0); + } + /* +@@ -319,18 +364,18 @@ int main(int argc, char **argv) + */ + if (qtest_has_machine("pc-i440fx-2.3")) { + add_cpuid_test("x86/cpuid/auto-level7/pc-i440fx-2.3/off", +- "-machine pc-i440fx-2.3 -cpu Penryn", ++ "Penryn", NULL, "pc-i440fx-2.3", + "level", 4); + add_cpuid_test("x86/cpuid/auto-level7/pc-i440fx-2.3/on", +- "-machine pc-i440fx-2.3 -cpu Penryn,erms=on", ++ "Penryn", "erms=on", "pc-i440fx-2.3", + "level", 7); + } + if (qtest_has_machine("pc-i440fx-2.9")) { + add_cpuid_test("x86/cpuid/auto-level7/pc-i440fx-2.9/off", +- "-machine pc-i440fx-2.9 -cpu Conroe", ++ "Conroe", NULL, "pc-i440fx-2.9", + "level", 10); + add_cpuid_test("x86/cpuid/auto-level7/pc-i440fx-2.9/on", +- "-machine pc-i440fx-2.9 -cpu Conroe,erms=on", ++ "Conroe", "erms=on", "pc-i440fx-2.9", + "level", 10); + } + +@@ -341,42 +386,43 @@ int main(int argc, char **argv) + */ + if (qtest_has_machine("pc-i440fx-2.3")) { + add_cpuid_test("x86/cpuid/xlevel-compat/pc-i440fx-2.3", +- "-machine pc-i440fx-2.3 -cpu SandyBridge", ++ "SandyBridge", NULL, "pc-i440fx-2.3", + "xlevel", 0x8000000a); + } + if (qtest_has_machine("pc-i440fx-2.4")) { + add_cpuid_test("x86/cpuid/xlevel-compat/pc-i440fx-2.4/npt-off", +- "-machine pc-i440fx-2.4 -cpu SandyBridge,", ++ "SandyBridge", NULL, "pc-i440fx-2.4", + "xlevel", 0x80000008); + add_cpuid_test("x86/cpuid/xlevel-compat/pc-i440fx-2.4/npt-on", +- "-machine pc-i440fx-2.4 -cpu SandyBridge,svm=on,npt=on", ++ "SandyBridge", "svm=on,npt=on", "pc-i440fx-2.4", + "xlevel", 0x80000008); + } + + /* Test feature parsing */ + add_feature_test("x86/cpuid/features/plus", +- "-cpu 486,+arat", ++ "486", "+arat", + 6, 0, "EAX", 2, true); + add_feature_test("x86/cpuid/features/minus", +- "-cpu pentium,-mmx", ++ "pentium", "-mmx", + 1, 0, "EDX", 23, false); + add_feature_test("x86/cpuid/features/on", +- "-cpu 486,arat=on", ++ "486", "arat=on", + 6, 0, "EAX", 2, true); + add_feature_test("x86/cpuid/features/off", +- "-cpu pentium,mmx=off", ++ "pentium", "mmx=off", + 1, 0, "EDX", 23, false); ++ + add_feature_test("x86/cpuid/features/max-plus-invtsc", +- "-cpu max,+invtsc", ++ "max" , "+invtsc", + 0x80000007, 0, "EDX", 8, true); + add_feature_test("x86/cpuid/features/max-invtsc-on", +- "-cpu max,invtsc=on", ++ "max", "invtsc=on", + 0x80000007, 0, "EDX", 8, true); + add_feature_test("x86/cpuid/features/max-minus-mmx", +- "-cpu max,-mmx", ++ "max", "-mmx", + 1, 0, "EDX", 23, false); + add_feature_test("x86/cpuid/features/max-invtsc-on,mmx=off", +- "-cpu max,mmx=off", ++ "max", "mmx=off", + 1, 0, "EDX", 23, false); + + return g_test_run(); +-- +2.39.3 + diff --git a/kvm-virtio-gpu-fix-v2-migration.patch b/kvm-virtio-gpu-fix-v2-migration.patch new file mode 100644 index 0000000..4c8e609 --- /dev/null +++ b/kvm-virtio-gpu-fix-v2-migration.patch @@ -0,0 +1,122 @@ +From 77e24d71549454d7d7b9e83f882e2817a5da7fac Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= +Date: Thu, 16 May 2024 12:40:22 +0400 +Subject: [PATCH 06/14] virtio-gpu: fix v2 migration +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Marc-André Lureau +RH-MergeRequest: 250: virtio-gpu: fix v2 migration +RH-Jira: RHEL-36329 +RH-Acked-by: Peter Xu +RH-Acked-by: Miroslav Rezanina +RH-Commit: [1/2] 55624c9074aaf1226ca3ae8a34744134cd8a4d9f (marcandre.lureau-rh/qemu-kvm-centos) + +Commit dfcf74fa ("virtio-gpu: fix scanout migration post-load") broke +forward/backward version migration. Versioning of nested VMSD structures +is not straightforward, as the wire format doesn't have nested +structures versions. Introduce x-scanout-vmstate-version and a field +test to save/load appropriately according to the machine version. + +Fixes: dfcf74fa ("virtio-gpu: fix scanout migration post-load") +Signed-off-by: Marc-André Lureau +Signed-off-by: Peter Xu +Reviewed-by: Fiona Ebner +Tested-by: Fiona Ebner +[fixed long lines] +Signed-off-by: Fabiano Rosas + +Jira: https://issues.redhat.com/browse/RHEL-36329 +Signed-off-by: Marc-André Lureau +(cherry picked from commit 40a23ef643664b5c1021a9789f9d680b6294fb50) +--- + hw/core/machine.c | 1 + + hw/display/virtio-gpu.c | 30 ++++++++++++++++++++++-------- + include/hw/virtio/virtio-gpu.h | 1 + + 3 files changed, 24 insertions(+), 8 deletions(-) + +diff --git a/hw/core/machine.c b/hw/core/machine.c +index 0f256d9633..cf1d7faaaf 100644 +--- a/hw/core/machine.c ++++ b/hw/core/machine.c +@@ -37,6 +37,7 @@ GlobalProperty hw_compat_8_2[] = { + { "migration", "zero-page-detection", "legacy"}, + { TYPE_VIRTIO_IOMMU_PCI, "granule", "4k" }, + { TYPE_VIRTIO_IOMMU_PCI, "aw-bits", "64" }, ++ { "virtio-gpu-device", "x-scanout-vmstate-version", "1" }, + }; + const size_t hw_compat_8_2_len = G_N_ELEMENTS(hw_compat_8_2); + +diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c +index ae831b6b3e..d60b1b2973 100644 +--- a/hw/display/virtio-gpu.c ++++ b/hw/display/virtio-gpu.c +@@ -1166,10 +1166,17 @@ static void virtio_gpu_cursor_bh(void *opaque) + virtio_gpu_handle_cursor(&g->parent_obj.parent_obj, g->cursor_vq); + } + ++static bool scanout_vmstate_after_v2(void *opaque, int version) ++{ ++ struct VirtIOGPUBase *base = container_of(opaque, VirtIOGPUBase, scanout); ++ struct VirtIOGPU *gpu = container_of(base, VirtIOGPU, parent_obj); ++ ++ return gpu->scanout_vmstate_version >= 2; ++} ++ + static const VMStateDescription vmstate_virtio_gpu_scanout = { + .name = "virtio-gpu-one-scanout", +- .version_id = 2, +- .minimum_version_id = 1, ++ .version_id = 1, + .fields = (const VMStateField[]) { + VMSTATE_UINT32(resource_id, struct virtio_gpu_scanout), + VMSTATE_UINT32(width, struct virtio_gpu_scanout), +@@ -1181,12 +1188,18 @@ static const VMStateDescription vmstate_virtio_gpu_scanout = { + VMSTATE_UINT32(cursor.hot_y, struct virtio_gpu_scanout), + VMSTATE_UINT32(cursor.pos.x, struct virtio_gpu_scanout), + VMSTATE_UINT32(cursor.pos.y, struct virtio_gpu_scanout), +- VMSTATE_UINT32_V(fb.format, struct virtio_gpu_scanout, 2), +- VMSTATE_UINT32_V(fb.bytes_pp, struct virtio_gpu_scanout, 2), +- VMSTATE_UINT32_V(fb.width, struct virtio_gpu_scanout, 2), +- VMSTATE_UINT32_V(fb.height, struct virtio_gpu_scanout, 2), +- VMSTATE_UINT32_V(fb.stride, struct virtio_gpu_scanout, 2), +- VMSTATE_UINT32_V(fb.offset, struct virtio_gpu_scanout, 2), ++ VMSTATE_UINT32_TEST(fb.format, struct virtio_gpu_scanout, ++ scanout_vmstate_after_v2), ++ VMSTATE_UINT32_TEST(fb.bytes_pp, struct virtio_gpu_scanout, ++ scanout_vmstate_after_v2), ++ VMSTATE_UINT32_TEST(fb.width, struct virtio_gpu_scanout, ++ scanout_vmstate_after_v2), ++ VMSTATE_UINT32_TEST(fb.height, struct virtio_gpu_scanout, ++ scanout_vmstate_after_v2), ++ VMSTATE_UINT32_TEST(fb.stride, struct virtio_gpu_scanout, ++ scanout_vmstate_after_v2), ++ VMSTATE_UINT32_TEST(fb.offset, struct virtio_gpu_scanout, ++ scanout_vmstate_after_v2), + VMSTATE_END_OF_LIST() + }, + }; +@@ -1659,6 +1672,7 @@ static Property virtio_gpu_properties[] = { + DEFINE_PROP_BIT("blob", VirtIOGPU, parent_obj.conf.flags, + VIRTIO_GPU_FLAG_BLOB_ENABLED, false), + DEFINE_PROP_SIZE("hostmem", VirtIOGPU, parent_obj.conf.hostmem, 0), ++ DEFINE_PROP_UINT8("x-scanout-vmstate-version", VirtIOGPU, scanout_vmstate_version, 2), + DEFINE_PROP_END_OF_LIST(), + }; + +diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h +index ed44cdad6b..842315d51d 100644 +--- a/include/hw/virtio/virtio-gpu.h ++++ b/include/hw/virtio/virtio-gpu.h +@@ -177,6 +177,7 @@ typedef struct VGPUDMABuf { + struct VirtIOGPU { + VirtIOGPUBase parent_obj; + ++ uint8_t scanout_vmstate_version; + uint64_t conf_max_hostmem; + + VirtQueue *ctrl_vq; +-- +2.39.3 + diff --git a/kvm-x86-cpu-deprecate-cpu-models-that-do-not-support-x86.patch b/kvm-x86-cpu-deprecate-cpu-models-that-do-not-support-x86.patch new file mode 100644 index 0000000..c5a06e4 --- /dev/null +++ b/kvm-x86-cpu-deprecate-cpu-models-that-do-not-support-x86.patch @@ -0,0 +1,98 @@ +From 8c735b34df1902f32eb68bb3e6c3e8f04b010bd4 Mon Sep 17 00:00:00 2001 +From: Ani Sinha +Date: Mon, 10 Jun 2024 15:34:22 +0530 +Subject: [PATCH 05/14] x86/cpu: deprecate cpu models that do not support + x86-64-v3 + +RH-Author: Ani Sinha +RH-MergeRequest: 247: x86/cpu: deprecate cpu models that do not support x86-64-v3 +RH-Jira: RHEL-28971 +RH-Acked-by: Igor Mammedov +RH-Acked-by: MST +RH-Commit: [1/1] 1afb03048c674b54da8cd4ad5174f767a7514b51 (anisinha/centos-qemu-kvm) + +RHEL-10 has switched to a new baseline microarchitecture called "x86-64-v3". +Deprecate the CPU models that do not support x86-64-v3. The following are the +CPU models that do not support v3: + +Intel: Denverton, IvyBridge, Nehalem, SandyBridge, Snowridge, Westmere. +AMD: Opteron_G4 and Opteron_G5. + +See also https://www.qemu.org/docs/master/system/i386/cpu.html#abi-compatibility-levels-for-cpu-models + +Signed-off-by: Ani Sinha +--- + target/i386/cpu.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/target/i386/cpu.c b/target/i386/cpu.c +index c83d585c9b..3eac3135a6 100644 +--- a/target/i386/cpu.c ++++ b/target/i386/cpu.c +@@ -2597,6 +2597,7 @@ static const X86CPUDefinition builtin_x86_defs[] = { + #endif // Removal of deprecated CPU models in RHEL-10 + { + .name = "Nehalem", ++ .deprecation_note = RHEL_CPU_DEPRECATION, + .level = 11, + .vendor = CPUID_VENDOR_INTEL, + .family = 6, +@@ -2674,6 +2675,7 @@ static const X86CPUDefinition builtin_x86_defs[] = { + }, + { + .name = "Westmere", ++ .deprecation_note = RHEL_CPU_DEPRECATION, + .level = 11, + .vendor = CPUID_VENDOR_INTEL, + .family = 6, +@@ -2755,6 +2757,7 @@ static const X86CPUDefinition builtin_x86_defs[] = { + }, + { + .name = "SandyBridge", ++ .deprecation_note = RHEL_CPU_DEPRECATION, + .level = 0xd, + .vendor = CPUID_VENDOR_INTEL, + .family = 6, +@@ -2841,6 +2844,7 @@ static const X86CPUDefinition builtin_x86_defs[] = { + }, + { + .name = "IvyBridge", ++ .deprecation_note = RHEL_CPU_DEPRECATION, + .level = 0xd, + .vendor = CPUID_VENDOR_INTEL, + .family = 6, +@@ -4121,6 +4125,7 @@ static const X86CPUDefinition builtin_x86_defs[] = { + }, + { + .name = "Denverton", ++ .deprecation_note = RHEL_CPU_DEPRECATION, + .level = 21, + .vendor = CPUID_VENDOR_INTEL, + .family = 6, +@@ -4231,6 +4236,7 @@ static const X86CPUDefinition builtin_x86_defs[] = { + }, + { + .name = "Snowridge", ++ .deprecation_note = RHEL_CPU_DEPRECATION, + .level = 27, + .vendor = CPUID_VENDOR_INTEL, + .family = 6, +@@ -4486,6 +4492,7 @@ static const X86CPUDefinition builtin_x86_defs[] = { + #endif + { + .name = "Opteron_G4", ++ .deprecation_note = RHEL_CPU_DEPRECATION, + .level = 0xd, + .vendor = CPUID_VENDOR_AMD, + .family = 21, +@@ -4518,6 +4525,7 @@ static const X86CPUDefinition builtin_x86_defs[] = { + }, + { + .name = "Opteron_G5", ++ .deprecation_note = RHEL_CPU_DEPRECATION, + .level = 0xd, + .vendor = CPUID_VENDOR_AMD, + .family = 21, +-- +2.39.3 + diff --git a/qemu-kvm.spec b/qemu-kvm.spec index 80f24ae..cdbd871 100644 --- a/qemu-kvm.spec +++ b/qemu-kvm.spec @@ -143,7 +143,7 @@ Obsoletes: %{name}-block-ssh <= %{epoch}:%{version} \ Summary: QEMU is a machine emulator and virtualizer Name: qemu-kvm Version: 9.0.0 -Release: 2%{?rcrel}%{?dist}%{?cc_suffix}.1 +Release: 3%{?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) @@ -184,6 +184,36 @@ Patch0016: 0016-Disable-FDC-devices.patch Patch0017: 0017-Disable-vga-cirrus-device.patch # For RHEL-37563 - Enable 'vhost-user-snd-pci' in qemu-kvm for RHIVOS Patch18: kvm-Enable-vhost-user-snd-pci-device.patch +# For RHEL-28972 - x86: Remove the existing deprecated CPU models on RHEL10 +Patch19: kvm-qtest-x86-numa-test-do-not-use-the-obsolete-pentium-.patch +# For RHEL-28972 - x86: Remove the existing deprecated CPU models on RHEL10 +Patch20: kvm-tests-qtest-libqtest-add-qtest_has_cpu_model-api.patch +# For RHEL-28972 - x86: Remove the existing deprecated CPU models on RHEL10 +Patch21: kvm-tests-qtest-x86-check-for-availability-of-older-cpu-.patch +# For RHEL-28972 - x86: Remove the existing deprecated CPU models on RHEL10 +Patch22: kvm-target-cpu-models-x86-Remove-the-existing-deprecated.patch +# For RHEL-28971 - Consider deprecating CPU models like "Nehalem" / "IvyBridge" on RHEL 10 +Patch23: kvm-x86-cpu-deprecate-cpu-models-that-do-not-support-x86.patch +# For RHEL-36329 - [RHEL10.0.beta][stable_guest_abi]Failed to migrate VM with (qemu) qemu-kvm: Missing section footer for 0000:00:01.0/virtio-gpu qemu-kvm: load of migration failed: Invalid argument +Patch24: kvm-virtio-gpu-fix-v2-migration.patch +# For RHEL-36329 - [RHEL10.0.beta][stable_guest_abi]Failed to migrate VM with (qemu) qemu-kvm: Missing section footer for 0000:00:01.0/virtio-gpu qemu-kvm: load of migration failed: Invalid argument +Patch25: kvm-rhel-9.4.0-machine-type-compat-for-virtio-gpu-migrat.patch +# For RHEL-39898 - s390: Remove the legacy CPU models on RHEL10 +Patch26: kvm-s390x-remove-deprecated-rhel-machine-types.patch +# For RHEL-39898 - s390: Remove the legacy CPU models on RHEL10 +Patch27: kvm-s390x-select-correct-components-for-no-board-build.patch +# For RHEL-39898 - s390: Remove the legacy CPU models on RHEL10 +Patch28: kvm-target-s390x-Add-a-CONFIG-switch-to-disable-legacy-C.patch +# For RHEL-39898 - s390: Remove the legacy CPU models on RHEL10 +Patch29: kvm-target-s390x-cpu_models-Disable-everything-up-to-the.patch +# For RHEL-39898 - s390: Remove the legacy CPU models on RHEL10 +Patch30: kvm-target-s390x-Revert-the-old-s390x-CPU-model-disablem.patch +# For RHEL-43409 - aio=io_uring: Assertion failure `luringcb->co->ctx == s->aio_context' with block_resize +# For RHEL-43410 - aio=native: Assertion failure `laiocb->co->ctx == laiocb->ctx->aio_context' with block_resize +Patch31: kvm-Revert-monitor-use-aio_co_reschedule_self.patch +# For RHEL-43409 - aio=io_uring: Assertion failure `luringcb->co->ctx == s->aio_context' with block_resize +# For RHEL-43410 - aio=native: Assertion failure `laiocb->co->ctx == laiocb->ctx->aio_context' with block_resize +Patch32: kvm-aio-warn-about-iohandler_ctx-special-casing.patch %if %{have_clang} BuildRequires: clang @@ -1249,6 +1279,34 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %endif %changelog +* Mon Jul 01 2024 Miroslav Rezanina - 9.0.0-3 +- kvm-qtest-x86-numa-test-do-not-use-the-obsolete-pentium-.patch [RHEL-28972] +- kvm-tests-qtest-libqtest-add-qtest_has_cpu_model-api.patch [RHEL-28972] +- kvm-tests-qtest-x86-check-for-availability-of-older-cpu-.patch [RHEL-28972] +- kvm-target-cpu-models-x86-Remove-the-existing-deprecated.patch [RHEL-28972] +- kvm-x86-cpu-deprecate-cpu-models-that-do-not-support-x86.patch [RHEL-28971] +- kvm-virtio-gpu-fix-v2-migration.patch [RHEL-36329] +- kvm-rhel-9.4.0-machine-type-compat-for-virtio-gpu-migrat.patch [RHEL-36329] +- kvm-s390x-remove-deprecated-rhel-machine-types.patch [RHEL-39898] +- kvm-s390x-select-correct-components-for-no-board-build.patch [RHEL-39898] +- kvm-target-s390x-Add-a-CONFIG-switch-to-disable-legacy-C.patch [RHEL-39898] +- kvm-target-s390x-cpu_models-Disable-everything-up-to-the.patch [RHEL-39898] +- kvm-target-s390x-Revert-the-old-s390x-CPU-model-disablem.patch [RHEL-39898] +- kvm-Revert-monitor-use-aio_co_reschedule_self.patch [RHEL-43409 RHEL-43410] +- kvm-aio-warn-about-iohandler_ctx-special-casing.patch [RHEL-43409 RHEL-43410] +- Resolves: RHEL-28972 + (x86: Remove the existing deprecated CPU models on RHEL10) +- Resolves: RHEL-28971 + (Consider deprecating CPU models like "Nehalem" / "IvyBridge" on RHEL 10) +- Resolves: RHEL-36329 + ([RHEL10.0.beta][stable_guest_abi]Failed to migrate VM with (qemu) qemu-kvm: Missing section footer for 0000:00:01.0/virtio-gpu qemu-kvm: load of migration failed: Invalid argument) +- Resolves: RHEL-39898 + (s390: Remove the legacy CPU models on RHEL10) +- Resolves: RHEL-43409 + (aio=io_uring: Assertion failure `luringcb->co->ctx == s->aio_context' with block_resize) +- Resolves: RHEL-43410 + (aio=native: Assertion failure `laiocb->co->ctx == laiocb->ctx->aio_context' with block_resize) + * Mon Jun 24 2024 Troy Dawson - 18:9.0.0-2.1 - Bump release for June 2024 mass rebuild