On Wed, Jul 22, 2015 at 03:59:50PM +0200, Thomas Huth wrote: > The code in smp_parse already checks the topology information for > sockets * cores * threads < cpus and bails out with an error in > that case. However, it is still possible to supply a bad configuration > the other way round, e.g. with: > > qemu-system-xxx -smp 4,sockets=1,cores=4,threads=2 > > QEMU then still starts the guest, with topology configuration that > is rather incomprehensible and likely not what the user wanted. > So let's add another check to refuse such wrong configurations. > > Signed-off-by: Thomas Huth <th...@redhat.com> > --- > vl.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/vl.c b/vl.c > index 5856396..c8d24b1 100644 > --- a/vl.c > +++ b/vl.c > @@ -1224,7 +1224,13 @@ static void smp_parse(QemuOpts *opts) > exit(1); > } > > - max_cpus = qemu_opt_get_number(opts, "maxcpus", 0); > + max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus); > + if (sockets * cores * threads > max_cpus) { > + fprintf(stderr, "cpu topology: error: " > + "sockets (%u) * cores (%u) * threads (%u) > maxcpus > (%u)\n", > + sockets, cores, threads, max_cpus); > + exit(1); > + }
I am always afraid of breaking existing setups when we do that, because there may be existing VMs running with these weird configurations, and people won't be able to live-migrate them to a newer QEMU. But I think we really have to start refusing to run obviously broken configurations one day, or we will never fix this mess, so: Reviewed-by: Eduardo Habkost <ehabk...@redhat.com> I want to apply this through the x86 tree, but I would like to get some Acked-by from other maintainers first. -- Eduardo