diff mbox series

[RFC,6/6] hw/arm/virt: cpu topology: don't allow threads

Message ID 20180704124923.32483-7-drjones@redhat.com
State New
Headers show
Series hw/arm/virt: Introduce cpu topology support | expand

Commit Message

Andrew Jones July 4, 2018, 12:49 p.m. UTC
None of the cpu models supported by mach-virt support threads.
Furthermore when running with KVM and cpu=host, while the host
processor may support threads, we don't yet support telling KVM
that we want the guest to see that. So if the user tries to
select more than one thread for the cpu topology, just error-out.

We'll remove the restriction for KVM guests after adding support
to KVM and QEMU for userspace controlled VCPU MPIDRs.

Signed-off-by: Andrew Jones <drjones@redhat.com>
---
 hw/arm/virt.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
diff mbox series

Patch

diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 6c5fecdd61df..8fc2751ab4bb 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -1390,6 +1390,19 @@  static void machvirt_init(MachineState *machine)
         exit(1);
     }
 
+    if (!vmc->ignore_cpu_topology && smp_threads > 1) {
+        if (kvm_enabled() &&
+            strcmp(machine->cpu_type, ARM_CPU_TYPE_NAME("host")) == 0) {
+            error_report("mach-virt: KVM: user controlled MPIDR.MT not "
+                         "yet supported");
+        } else {
+            error_report("mach-virt: CPU type %s does not support SMT",
+                         machine->cpu_type);
+        }
+        error_report("mach-virt: smp_threads cannot be > 1");
+        exit(1);
+    }
+
     /* If we have an EL3 boot ROM then the assumption is that it will
      * implement PSCI itself, so disable QEMU's internal implementation
      * so it doesn't get in the way. Instead of starting secondary