forked from rpms/qemu-kvm
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
4.4 KiB
117 lines
4.4 KiB
1 month ago
|
From d0f88c7a0c95b4d9ab03221400736cb17cb4b995 Mon Sep 17 00:00:00 2001
|
||
|
From: Thomas Huth <thuth@redhat.com>
|
||
|
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 <thuth@redhat.com>
|
||
|
RH-MergeRequest: 252: s390x: remove legacy CPU types
|
||
|
RH-Jira: RHEL-39898
|
||
|
RH-Acked-by: Cédric Le Goater <clg@redhat.com>
|
||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||
|
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 <thuth@redhat.com>
|
||
|
(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
|
||
|
|