[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 12/12] s390x/cpu topology: add max_threads machine class attribute
From: |
Thomas Huth |
Subject: |
[PULL 12/12] s390x/cpu topology: add max_threads machine class attribute |
Date: |
Sun, 6 Nov 2022 16:31:56 +0100 |
From: Pierre Morel <pmorel@linux.ibm.com>
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.2 and
refuse to use threads in newer machines until multithreading
is really exposed to the guest by the machine.
Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Message-Id: <20221103170150.20789-3-pmorel@linux.ibm.com>
[thuth: Small fixes to the commit description]
Signed-off-by: Thomas Huth <thuth@redhat.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 196773c833..560ddbb6fb 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
- [PULL 02/12] tests/qtest/libqos/e1000e: Set E1000_CTRL_SLU, (continued)
- [PULL 02/12] tests/qtest/libqos/e1000e: Set E1000_CTRL_SLU, Thomas Huth, 2022/11/06
- [PULL 05/12] tests/qtest/libqos/e1000e: Use IVAR shift definitions, Thomas Huth, 2022/11/06
- [PULL 03/12] tests/qtest/e1000e-test: Use e1000_regs.h, Thomas Huth, 2022/11/06
- [PULL 04/12] tests/qtest/libqos/e1000e: Use E1000_STATUS_ASDV_1000, Thomas Huth, 2022/11/06
- [PULL 06/12] tests/qtest: Fix two format strings, Thomas Huth, 2022/11/06
- [PULL 08/12] gitlab-ci: increase clang-user timeout, Thomas Huth, 2022/11/06
- [PULL 07/12] tests/qtest: migration-test: Enable TLS PSK tests for win32, Thomas Huth, 2022/11/06
- [PULL 09/12] s390x/css: revert SCSW ctrl/flag bits on error, Thomas Huth, 2022/11/06
- [PULL 10/12] s390x/pci: RPCIT second pass when mappings exhausted, Thomas Huth, 2022/11/06
- [PULL 11/12] s390x: Register TYPE_S390_CCW_MACHINE properties as class properties, Thomas Huth, 2022/11/06
- [PULL 12/12] s390x/cpu topology: add max_threads machine class attribute,
Thomas Huth <=
- Re: [PULL 00/12] qtest and s390x patches, Stefan Hajnoczi, 2022/11/07