On 9/5/22 17:10, Pierre Morel wrote:
On 9/5/22 13:32, Nico Boehr wrote:
Quoting Pierre Morel (2022-09-02 09:55:22)
S390x do not support multithreading in the guest.
Do not let admin falsely specify multithreading on QEMU
smp commandline.
Signed-off-by: Pierre Morel <pmorel@xxxxxxxxxxxxx>
---
hw/s390x/s390-virtio-ccw.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 70229b102b..b5ca154e2f 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -86,6 +86,9 @@ static void s390_init_cpus(MachineState *machine)
MachineClass *mc = MACHINE_GET_CLASS(machine);
int i;
+ /* Explicitely do not support threads */
^
Explicitly
+ assert(machine->smp.threads == 1);
It might be nicer to give a better error message to the user.
What do you think about something like (broken whitespace ahead):
if (machine->smp.threads != 1) {if (machine->smp.threads != 1) {
error_setg(&error_fatal, "More than one thread specified, but multithreading unsupported");
return;
}
OK, I think I wanted to do this and I changed my mind, obviously, I do not recall why.
I will do almost the same but after a look at error.h I will use error_report()/exit() instead of error_setg()/return as in:
+ /* Explicitly do not support threads */
+ if (machine->smp.threads != 1) {
+ error_report("More than one thread specified, but multithreading unsupported");
+ exit(1);
+ }
or add an 'Error **errp' parameter to s390_init_cpus() and use error_setg()
as initially proposed. s390x_new_cpu() would benefit from it also.
Thanks,
C.
Thanks,
Regards,
Pierre