[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v11 02/11] s390x/cpu topology: add max_threads machine class attr
From: |
Pierre Morel |
Subject: |
[PATCH v11 02/11] s390x/cpu topology: add max_threads machine class attribute |
Date: |
Thu, 3 Nov 2022 18:01:41 +0100 |
The S390 CPU topology accepts the smp.threads argument while
in reality it does not effectively allow multthreading.
Let's keep this behavior for machines older than 7.3 and
refuse to use threads in newer machines until multithreading
is really proposed to the guest by the machine.
Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
---
include/hw/s390x/s390-virtio-ccw.h | 1 +
hw/s390x/s390-virtio-ccw.c | 11 +++++++++++
2 files changed, 12 insertions(+)
diff --git a/include/hw/s390x/s390-virtio-ccw.h
b/include/hw/s390x/s390-virtio-ccw.h
index 8a0090a071..4f8a39abda 100644
--- a/include/hw/s390x/s390-virtio-ccw.h
+++ b/include/hw/s390x/s390-virtio-ccw.h
@@ -40,6 +40,7 @@ struct S390CcwMachineClass {
bool cpu_model_allowed;
bool css_migration_enabled;
bool hpage_1m_allowed;
+ int max_threads;
};
/* runtime-instrumentation allowed by the machine */
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 567498e780..9ab91df5b1 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -85,8 +85,15 @@ out:
static void s390_init_cpus(MachineState *machine)
{
MachineClass *mc = MACHINE_GET_CLASS(machine);
+ S390CcwMachineClass *s390mc = S390_CCW_MACHINE_CLASS(mc);
int i;
+ if (machine->smp.threads > s390mc->max_threads) {
+ error_report("S390 does not support more than %d threads.",
+ s390mc->max_threads);
+ exit(1);
+ }
+
/* initialize possible_cpus */
mc->possible_cpu_arch_ids(machine);
@@ -731,6 +738,7 @@ static void ccw_machine_class_init(ObjectClass *oc, void
*data)
s390mc->cpu_model_allowed = true;
s390mc->css_migration_enabled = true;
s390mc->hpage_1m_allowed = true;
+ s390mc->max_threads = 1;
mc->init = ccw_init;
mc->reset = s390_machine_reset;
mc->block_default_type = IF_VIRTIO;
@@ -859,8 +867,11 @@ static void ccw_machine_7_1_instance_options(MachineState
*machine)
static void ccw_machine_7_1_class_options(MachineClass *mc)
{
+ S390CcwMachineClass *s390mc = S390_CCW_MACHINE_CLASS(mc);
+
ccw_machine_7_2_class_options(mc);
compat_props_add(mc->compat_props, hw_compat_7_1, hw_compat_7_1_len);
+ s390mc->max_threads = S390_MAX_CPUS;
}
DEFINE_CCW_MACHINE(7_1, "7.1", false);
--
2.31.1
- [PATCH v11 00/11] s390x: CPU Topology, Pierre Morel, 2022/11/03
- [PATCH v11 03/11] s390x/cpu topology: core_id sets s390x CPU topology, Pierre Morel, 2022/11/03
- [PATCH v11 10/11] s390x/cpu_topology: activating CPU topology, Pierre Morel, 2022/11/03
- [PATCH v11 02/11] s390x/cpu topology: add max_threads machine class attribute,
Pierre Morel <=
- [PATCH v11 01/11] s390x: Register TYPE_S390_CCW_MACHINE properties as class properties, Pierre Morel, 2022/11/03
- Re: [PATCH v11 01/11] s390x: Register TYPE_S390_CCW_MACHINE properties as class properties, Thomas Huth, 2022/11/04
- Re: [PATCH v11 01/11] s390x: Register TYPE_S390_CCW_MACHINE properties as class properties, Pierre Morel, 2022/11/04
- Re: [PATCH v11 01/11] s390x: Register TYPE_S390_CCW_MACHINE properties as class properties, Cédric Le Goater, 2022/11/04
- Re: [PATCH v11 01/11] s390x: Register TYPE_S390_CCW_MACHINE properties as class properties, Pierre Morel, 2022/11/04
- Re: [PATCH v11 01/11] s390x: Register TYPE_S390_CCW_MACHINE properties as class properties, Thomas Huth, 2022/11/04
- Re: [PATCH v11 01/11] s390x: Register TYPE_S390_CCW_MACHINE properties as class properties, Pierre Morel, 2022/11/04
- Re: [PATCH v11 01/11] s390x: Register TYPE_S390_CCW_MACHINE properties as class properties, Thomas Huth, 2022/11/06
- Re: [PATCH v11 01/11] s390x: Register TYPE_S390_CCW_MACHINE properties as class properties, Pierre Morel, 2022/11/07
[PATCH v11 09/11] s390x/cpu topology: add topology machine property, Pierre Morel, 2022/11/03