* [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function @ 2015-07-22 13:59 Thomas Huth 2015-07-23 12:07 ` Igor Mammedov ` (3 more replies) 0 siblings, 4 replies; 9+ messages in thread From: Thomas Huth @ 2015-07-22 13:59 UTC (permalink / raw) To: qemu-devel, Paolo Bonzini; +Cc: qemu-trivial, Eduardo Habkost 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 <thuth@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); + } smp_cpus = cpus; smp_cores = cores > 0 ? cores : 1; -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function 2015-07-22 13:59 [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function Thomas Huth @ 2015-07-23 12:07 ` Igor Mammedov 2015-07-24 11:53 ` Thomas Huth 2015-08-18 23:39 ` Thomas Huth ` (2 subsequent siblings) 3 siblings, 1 reply; 9+ messages in thread From: Igor Mammedov @ 2015-07-23 12:07 UTC (permalink / raw) To: Thomas Huth; +Cc: qemu-trivial, Paolo Bonzini, qemu-devel, Eduardo Habkost On Wed, 22 Jul 2015 15:59:50 +0200 Thomas Huth <thuth@redhat.com> 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 <thuth@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", just a nit, maybe s/maxcpus/[max]cpus/ > + sockets, cores, threads, max_cpus); > + exit(1); > + } > > smp_cpus = cpus; > smp_cores = cores > 0 ? cores : 1; ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function 2015-07-23 12:07 ` Igor Mammedov @ 2015-07-24 11:53 ` Thomas Huth 0 siblings, 0 replies; 9+ messages in thread From: Thomas Huth @ 2015-07-24 11:53 UTC (permalink / raw) To: Igor Mammedov; +Cc: qemu-trivial, Paolo Bonzini, qemu-devel, Eduardo Habkost On 23/07/15 14:07, Igor Mammedov wrote: > On Wed, 22 Jul 2015 15:59:50 +0200 > Thomas Huth <thuth@redhat.com> 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 <thuth@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", > just a nit, maybe s/maxcpus/[max]cpus/ I think it should be pretty obvious for the user that maxcpus = cpus when the "maxcpus" option has not been specified but only the "cpus" option. So I'd prefer to keep it the way without the square brackets, it's IMHO easier to read. Thomas ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function 2015-07-22 13:59 [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function Thomas Huth 2015-07-23 12:07 ` Igor Mammedov @ 2015-08-18 23:39 ` Thomas Huth 2015-08-19 15:58 ` Eduardo Habkost 2015-08-26 16:02 ` Eduardo Habkost 3 siblings, 0 replies; 9+ messages in thread From: Thomas Huth @ 2015-08-18 23:39 UTC (permalink / raw) To: qemu-devel, Paolo Bonzini; +Cc: qemu-trivial, Eduardo Habkost On 22/07/15 06:59, 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 <thuth@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); > + } > > smp_cpus = cpus; > smp_cores = cores > 0 ? cores : 1; *ping* Thomas ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function 2015-07-22 13:59 [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function Thomas Huth 2015-07-23 12:07 ` Igor Mammedov 2015-08-18 23:39 ` Thomas Huth @ 2015-08-19 15:58 ` Eduardo Habkost 2015-08-25 13:25 ` Thomas Huth 2015-08-26 16:02 ` Eduardo Habkost 3 siblings, 1 reply; 9+ messages in thread From: Eduardo Habkost @ 2015-08-19 15:58 UTC (permalink / raw) To: Thomas Huth; +Cc: qemu-trivial, Paolo Bonzini, qemu-devel 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 <thuth@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 <ehabkost@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 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function 2015-08-19 15:58 ` Eduardo Habkost @ 2015-08-25 13:25 ` Thomas Huth 2015-08-26 11:36 ` Cornelia Huck 2015-08-26 12:11 ` Bastian Koppelmann 0 siblings, 2 replies; 9+ messages in thread From: Thomas Huth @ 2015-08-25 13:25 UTC (permalink / raw) To: Eduardo Habkost Cc: Peter Maydell, James Hogan, Jia Liu, Max Filippov, Bastian Koppelmann, Anthony Green, Stefano Stabellini, Mark Cave-Ayland, Alexander Graf, qemu-devel, Blue Swirl, Christian Borntraeger, Michael Walle, Edgar E. Iglesias, Cornelia Huck, Paolo Bonzini, Guan Xuetao, Aurelien Jarno, Richard Henderson On 19/08/15 17:58, Eduardo Habkost wrote: > 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 <thuth@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 <ehabkost@redhat.com> > > I want to apply this through the x86 tree, but I would like to get some > Acked-by from other maintainers first. Ok, thanks! So *ping* to the other CPU core maintainers here ... could I get some more ACKs, please? Thomas ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function 2015-08-25 13:25 ` Thomas Huth @ 2015-08-26 11:36 ` Cornelia Huck 2015-08-26 12:11 ` Bastian Koppelmann 1 sibling, 0 replies; 9+ messages in thread From: Cornelia Huck @ 2015-08-26 11:36 UTC (permalink / raw) To: Thomas Huth Cc: Peter Maydell, James Hogan, Eduardo Habkost, Max Filippov, Bastian Koppelmann, Anthony Green, Stefano Stabellini, Mark Cave-Ayland, Alexander Graf, qemu-devel, Blue Swirl, Christian Borntraeger, Michael Walle, Edgar E. Iglesias, Paolo Bonzini, Jia Liu, Guan Xuetao, Aurelien Jarno, Richard Henderson On Tue, 25 Aug 2015 15:25:00 +0200 Thomas Huth <thuth@redhat.com> wrote: > On 19/08/15 17:58, Eduardo Habkost wrote: > > 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 <thuth@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 <ehabkost@redhat.com> > > > > I want to apply this through the x86 tree, but I would like to get some > > Acked-by from other maintainers first. > > Ok, thanks! > > So *ping* to the other CPU core maintainers here ... could I get some > more ACKs, please? Looks reasonable. Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function 2015-08-25 13:25 ` Thomas Huth 2015-08-26 11:36 ` Cornelia Huck @ 2015-08-26 12:11 ` Bastian Koppelmann 1 sibling, 0 replies; 9+ messages in thread From: Bastian Koppelmann @ 2015-08-26 12:11 UTC (permalink / raw) To: Thomas Huth, Eduardo Habkost Cc: Peter Maydell, James Hogan, Jia Liu, Max Filippov, Anthony Green, Stefano Stabellini, Mark Cave-Ayland, Alexander Graf, qemu-devel, Blue Swirl, Christian Borntraeger, Michael Walle, Edgar E. Iglesias, Cornelia Huck, Paolo Bonzini, Guan Xuetao, Aurelien Jarno, Richard Henderson Am 25.08.2015 um 15:25 schrieb Thomas Huth: > On 19/08/15 17:58, Eduardo Habkost wrote: >> 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 <thuth@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 <ehabkost@redhat.com> >> >> I want to apply this through the x86 tree, but I would like to get some >> Acked-by from other maintainers first. > Ok, thanks! > > So *ping* to the other CPU core maintainers here ... could I get some > more ACKs, please? > > Thomas > > Acked-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function 2015-07-22 13:59 [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function Thomas Huth ` (2 preceding siblings ...) 2015-08-19 15:58 ` Eduardo Habkost @ 2015-08-26 16:02 ` Eduardo Habkost 3 siblings, 0 replies; 9+ messages in thread From: Eduardo Habkost @ 2015-08-26 16:02 UTC (permalink / raw) To: Thomas Huth; +Cc: qemu-trivial, Paolo Bonzini, qemu-devel 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 <thuth@redhat.com> Applied to the x86 tree. Thanks! -- Eduardo ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2015-08-26 16:02 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-07-22 13:59 [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function Thomas Huth 2015-07-23 12:07 ` Igor Mammedov 2015-07-24 11:53 ` Thomas Huth 2015-08-18 23:39 ` Thomas Huth 2015-08-19 15:58 ` Eduardo Habkost 2015-08-25 13:25 ` Thomas Huth 2015-08-26 11:36 ` Cornelia Huck 2015-08-26 12:11 ` Bastian Koppelmann 2015-08-26 16:02 ` Eduardo Habkost
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).